例如,我们在tableview中使用此方法
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 16;
}
Run Code Online (Sandbox Code Playgroud)
我想知道我们不会在任何地方调用此方法,但应用程序读取此值是怎么回事?有很多这样的方法,我们没有打电话.
bbu*_*bum 11
您的对象已被设置为某处UITableView的数据源.最有可能的是,通过在InterfaceBuilder中建立连接,尽管通过设置dataSourceUITableView 的属性可以直接在代码中这样做:
- (void) setUpMyJunkMan
{
myTableView.dataSource = self;
}
Run Code Online (Sandbox Code Playgroud)
将对象设置为数据源后,表视图将根据需要调用方法,以确定需要绘制的内容或响应事件的方式.
你的目标需要实现的UITableViewDataSource协议(不过,如果你连接通过InterfaceBuilder的数据源,有可能不是一个投诉,如果你不这样做-这是一个比一个运行时更编译时验证).
如果你看一下声明UITableViewDataSource,你会发现有很多方法@optional.其余的是@required; 你必须实现它们来履行协议的合同.
这是数据源和代理之间的关键区别.代理可以选择实现任何声明的方法.数据源在两个对象之间创建更加正式的关系,其中必须实现一些方法.
| 归档时间: |
|
| 查看次数: |
1134 次 |
| 最近记录: |