2017-08-14 52 views
0

当创建表视图时,ViewController类采用“UITableViewDelegate”和“UITableViewDataSource”协议。要创建表格视图,我们必须从这些协议的方法中受益。我明白这一点。数据源和委托选项

但是,在创建表视图时,我们还选择tableview-data source和tableview-delegate选项,并通过拖动将它们与ViewController类相匹配。这些都是在故事板文件中执行的。

为什么这个匹配过程很重要?

为什么我们要执行这个匹配过程?

+1

想象一下,您有许多视图控制器,每个视图控制器都有一个表视图。您所说的匹配过程将有助于连接哪个表视图与哪个视图控制器关联。 –

+0

至少你必须实现'UITableViewDataSource'来告诉tableView你需要显示多少行以及每行的单元格应该是多少。如果你需要知道用户点击了什么单元,那么你需要实现和'UITableViewDelegate'。阅读Apple的文档以了解每个协议的功能以及为什么需要它。 https://developer.apple.com/documentation/uikit/uitableviewdelegate https://developer.apple.com/documentation/uikit/uitableviewdatasource – Pancho

回答

3

您不需要遵守两种协议,也不需要将delegatedataSource设置为Storyboard,但也可以通过编程方式完成。

如果您正在使用UITableView而不是继承UITableViewControllerViewController,则只需执行这些操作。 UITableViewController会自动处理符合您的两个协议。

您需要的delegate/dataSource设立一定ViewController,因为系统需要知道,它需要建立表视图时要调用的类delegate/dataSource方法。如果你在同一个Storyboard里有几个视图控制器,它们的表视图在同一个Storyboard之内,而没有设置委托/数据源到当前的视图控制器,系统不知道哪个类需要调用哪个tableview。

遵守UITableViewDelegate协议是可选的,如果您只需要在表格视图上显示数据,但不需要用户与其交互,则只需要符合UITableViewDataSource协议。这是为了设置表格视图中的部分/单元格的数量以及设置这些部分/单元格的内容所必需的。

+0

即使你使用UITableViewController工作,你也不需要拥有它数据源和tableview的委托。 – Abizern

+1

非常感谢哟。我说我不能理解匹配过程的目的,但几乎每个人都发送协议的链接。你解释了这个目标非常好。 – Goktug

+0

@Goktug - 抱歉的链接,但我虽然你可以得到详细信息,所以给你链接到官方文档。 –

相关问题