当创建表视图时,ViewController类采用“UITableViewDelegate”和“UITableViewDataSource”协议。要创建表格视图,我们必须从这些协议的方法中受益。我明白这一点。数据源和委托选项
但是,在创建表视图时,我们还选择tableview-data source和tableview-delegate选项,并通过拖动将它们与ViewController类相匹配。这些都是在故事板文件中执行的。
为什么这个匹配过程很重要?
为什么我们要执行这个匹配过程?
当创建表视图时,ViewController类采用“UITableViewDelegate”和“UITableViewDataSource”协议。要创建表格视图,我们必须从这些协议的方法中受益。我明白这一点。数据源和委托选项
但是,在创建表视图时,我们还选择tableview-data source和tableview-delegate选项,并通过拖动将它们与ViewController类相匹配。这些都是在故事板文件中执行的。
为什么这个匹配过程很重要?
为什么我们要执行这个匹配过程?
您不需要遵守两种协议,也不需要将delegate
和dataSource
设置为Storyboard
,但也可以通过编程方式完成。
如果您正在使用UITableView
而不是继承UITableViewController
的ViewController
,则只需执行这些操作。 UITableViewController
会自动处理符合您的两个协议。
您需要的delegate
/dataSource
设立一定ViewController
,因为系统需要知道,它需要建立表视图时要调用的类delegate
/dataSource
方法。如果你在同一个Storyboard
里有几个视图控制器,它们的表视图在同一个Storyboard
之内,而没有设置委托/数据源到当前的视图控制器,系统不知道哪个类需要调用哪个tableview。
遵守UITableViewDelegate
协议是可选的,如果您只需要在表格视图上显示数据,但不需要用户与其交互,则只需要符合UITableViewDataSource
协议。这是为了设置表格视图中的部分/单元格的数量以及设置这些部分/单元格的内容所必需的。
想象一下,您有许多视图控制器,每个视图控制器都有一个表视图。您所说的匹配过程将有助于连接哪个表视图与哪个视图控制器关联。 –
至少你必须实现'UITableViewDataSource'来告诉tableView你需要显示多少行以及每行的单元格应该是多少。如果你需要知道用户点击了什么单元,那么你需要实现和'UITableViewDelegate'。阅读Apple的文档以了解每个协议的功能以及为什么需要它。 https://developer.apple.com/documentation/uikit/uitableviewdelegate https://developer.apple.com/documentation/uikit/uitableviewdatasource – Pancho