1. 视图中的委托协议与数据源协议
相对简单的视图只指定了委托协议,例如UITextField(UITextFieldDelegate)和UITextView(UITextViewDelegate)
复杂的高级视图同时指定委托协议与数据源协议,主要有选择器(UIPickView)、集合视图(UICollectionView)和表视图(UITableView),对应的数据源协议命名同样是“视图名+DateSource”
(1) 日期选择器
代码部分和效果图:
(2)普通选择器 UIPickView : UIPickViewDataSource 和UIPickViewDelegate协议
首先 创建plist文件,保存地区数据。
代码部分先根据plist文件路径取出所有数据,然后依次添加控件选择器、显示标签和按钮,再实现按钮的点击事件,最后分别实现数据源方法和代理方法。
主要代码和效果图如下:
(3)集合视图UICollectionView
UICollectionView继承自UIScrollView,也有两个协议UICollectionViewDataSource和UICollectionViewDelegate.
UICollectionViewCell是单元格类,它的布局由UICollectionViewLayout类定义,是抽象类。UICollectionViewFlowLayout类是UICollectionViewLayout的子类。------对于复杂的布局,可以自定义UICollectionViewLayout。 UICollectionView对应的控制器是UICollectionViewController。
如下图:
直接上代码
底下是UICollectionView的三个数据源方法----------[一般实现前两个就可以了。如果你需要对colltionView本身重用的话,就需要创建CollectionReusableView(继承自UICollectionReusableView)这个类,并实现第三个数据源方法]
这里分别是UICollectionView的代理方法和UICollectionViewDelegateFlowLayout代理方法
这是最终的效果图: