IOS之UIKit_Day12
1.故事板的基本使用:
a.设置启动
b.添加新的场景
c.添加过度segue
d.场景中的控制器与自定义的控制器的绑定
e.控制器的使用
1》导航控制器
2》标签控制器的配置
****cell.selectionStyle=UITableViewCellSelectionStyleNone设置该行不可点击
2.UITableView在故事板中的使用
2.1 静态表格:
实现步骤:
1.从资源库中添加表格控制器,在第四个检查器中,设置第一个Content为Static
2.修改Prototype的属性为0
3.设置section属性 设置style属性为group
4.逐一选中各个Section设置头和cell的数目
5.逐一选中Cell设置样式
6.新建一个类,继承自UITableViewController在故事板中选中控制器,修改第三个检查器中的Class属性,将自定义的类与场景关联起来
7.删除新建的类中有关生成表格的三问一答的代码
8.如果需要对静态的表格中的控件赋动态值,可以在拆分试图下,将控件连线到类中,然后在viewWillAppear;事件中为控件赋值。
2.2 动态表格-系统原型
实现步骤:
1.从资源库中添加表格控制器
2.设置表格的Prototype的个数为1
3.选中Prototype Cell 在检查器中设置该原型的style以及indentifier
4.创建一个类 继承自UITableViewController
5.将类与故事板中的控制器绑定
6.在回答三问,其中单元格不需要注册回答第三问是直接按照属性栏中设置的indentifier去队列中取出单元格
2.3 动态表格—自定义原型
实现步骤:
1.从资源库中拖拽一个TableViewController
2.添加一个单元格原型
3.设定该原型的style为Custom
4.设定该原型的identifier
5.设计cell的内容
6.新建一个类 继承自UITableViewCell
7.选中原型Cell 第三个检查器 设定class为新建的类
8.进入拆分视图中,将原型cell中的各个控件连线到类中,作为公开的输出口
9.新建一个类,继承自UITableViewController并与故事板中VC绑定
10.回答第三个问题时,从队列中按照原型的identifier取出自定义的cell类的实例,并返回.
2.4 动态表格-混合自定义原型
实现步骤:
1.在故事板中添加tableViewController之后 设置Prototype Cell的个数为2
2.为每个Prototype Cell设置identifier
3.在tableVC绑定的自定义类中 回答三问
其中,第三问生成单元格时,可以根据生成的单元格的位置以及设定的规律去队列中取按照不同的identifier来取不同原型的单元格,然后返回。
2.5 跳转
从一个场景跳转到另外一个场景(一个VC跳转到另外一个VC)
实现方法:
方法一:segue
不需要写代码通过连线的方式
实现步骤:
选中原型VC按住Control 左键 拖拽到目标VC 弹出的菜单后,根据跳转的需要设置push或者mode即可
方法二:
从一个VC跳转到故事板中的一个独立VC
实现步骤:
1.选中故事板中的VC 在第三个检查器中设定VC的storyboard ID
2. 在要执行跳转的事件中编写代码
3.获取控制器所在的故事板对象self.storyboard
4.故事板发消息self.storyboard instantiateViewControllerWithIdentifier:@"SomeVC"
其中参数填写为VC的StoryBoard ID即可
然后 推出新的VC
方法三:
跳转到独立的Xib
实现方法:
同之前的跳转方式一样,使用initWithNIbName穿件VC的实例后 推出即可
2.6 传值
正向传值:从AVC跳转到BVC时,AVC传数据给BVC的过程
实现思路:
1.BVC中公开一个属性接受值
2.AVC在跳转到BVC之前取到BVC的引用,就可以给空出的属性赋值,完成正向传值。
反向传值:
从AVC跳转到BVC之后,BVC返回AVC的过程给AVC传值的过程
实现思路:
1.BVC是委托方做三件事(定义协议,添加Delegate方法,合适的时机发消息)
2.AVC是代理方,做三件事(遵守协议,实现方法,设置BVC的Delegate为self)
3UICollectionViewControl
3.1 是什么?
可以控制视图,以多行的形式展示数据的一种控制器。是UITableViewControl的演变,所以在使用上与表视图和相似(从IOS6后支持)
3.2 与表试图相比的相同点
UITableViewController
.tableView(UITableView)
.dataSource(id<UITableViewDataSource>)
.delegate(id<UITableViewDelegate>)
每一行的类型是:UITableViewCell
加载数据:实现三问一答即可(有几个分区,每个分区多少行,每一行什么样)
UICollectionViewController
.collectionView(UICollectionView)
.dataSource(id<UICollectionViewDataSource>)
.delegate(id<UICollectionViewCell>)
每一项的类型:UICollectionViewCell
加载数据:实现三问一答即可(有几个分区,每个分区有多少个item,每一项是什么样)
3.3与tableView相比的不同点
1.tableViewCell默认自带了三个显示内容的控件(imageView testable DetailLable)并且着三个控件的摆放位置也有系统定义好的四种样式,而collectionViewCell没有任何事先有系统定义的用于显示内容的容器,只有能访问的这样几个属性:backgroundColor ,bacbackgroundView、contentView
2.tableViewCell的排列顺序是系统提前定义好的,都是严格的按照从上倒下,依次排布,也就是每一cell的坐标,在指定了行高之后,都有系统计算完成并显示;collectionView没有固定的item的排布规则,需要自定义,这时需要一个特殊的类叫做布局类(UICollectionViewLayout)来辅助CollectionView完成每一个item的显示位置的设定,系统只提供了一种布局类,从UICollectionViewLayout派生出来的,叫做流式布局UICollectionFlowLayout,这种系统定义的布局类的布局特点是:一行排满后,自动换行