将表格视图添加到视图控制器后,我在界面生成器中控制 - 从电视拖动两次到VC,以指定VC是表格视图的数据源和委托。
在视图控制器中,我必须在类定义或视图控制器扩展中指定相同的内容。
这是为什么?这不是多余的吗?
感谢。
答案 0 :(得分:5)
完全没有。你在做什么是两件事。
在extension
告诉编译器"此类符合UITableViewDatasource
和UITableViewDelegate
协议,因此可以用于UITableView
"
在Interface Builder中,您告诉UITableView
"此类是我希望您将其用作datasource
和delegate
"。
答案 1 :(得分:0)
这当然不是多余的。
从名称的不同可以看出,“委托”和“数据源”是不同的东西。
数据源回答有关表视图显示的数据的问题。例如,每个部分有多少行?有几个部分?表格查看单元格多长时间?每个部分的页眉视图和页脚视图是什么?
另一方面,代表回答有关表视图行为的问题。例如,当用户选择一个单元格时应该做什么?当用户取消选择单元格时应该怎么做?用户结束编辑时应该怎么做?
由于数据源和委托的功能非常不同,类可能只是数据源而不是委托,反之亦然。这就是你拖两次的原因,一次说VC是数据源,一次说VC就是委托。
但是,不仅任何VC都可以是数据源和代理。您必须告诉编译器您的VC能够成为数据源和委托。这就是你写的原因:
class MyVC: UITableViewDelegate, UITableViewDataSource {}
如果您认为这有两个麻烦,请尽可能使用UITableViewController
。