UITableViewDelegate 和 UITableViewDatasource 的区别

Posted

技术标签:

【中文标题】UITableViewDelegate 和 UITableViewDatasource 的区别【英文标题】:Difference between UITableViewDelegate and UITableViewDatasource 【发布时间】:2011-04-19 09:50:08 【问题描述】:

谁能告诉我 ?

【问题讨论】:

【参考方案1】:

UITableViewDelegate

充当表格的代表意味着您可以回答有关表格布局用户在表格视图上执行的操作的请求。 Layout 方法包括 tableview 询问行的高度、页眉和页脚、按钮的外观等。Action 方法包括用户选择一行并开始并结束对一行的编辑。

UITableView 数据源

充当表格的数据源意味着您为表格的部分和行提供数据,并且您对更改表格数据的消息采取行动。绘制表格时,数据源被要求提供单元格的数据,被告知用户已要求删除一行,并被告知用户已编辑的行的新值。

【讨论】:

为什么“titleForHeaderInSection...”属于数据源,但“viewForHeaderInSection...”属于委托对我来说仍然没有多大意义。我可以看到第二种方法与布局有什么关系,但是如果您返回的自定义视图有一些以自定义方式定位的标签(例如,居中而不是左对齐),您仍然必须在实现内部确定 text标签,所以它只是第一个具有更丰富布局能力的方法...... @NicolasMiari:标题的内容是数据驱动的,标题的外观是布局驱动的。带有部分的表格(通常)所有标题看起来都一样,但这些标题的内容(标题)会随着每个新部分而改变。【参考方案2】:

补充答案,这是委托和数据源中所有方法的表格。

查看原答案:delegate and datasource methods for UITableView

【讨论】:

【参考方案3】:

UITableViewDelegate 是你在你的类上实现的用于接收UITableView 事件的协议。 UITableViewDataSource 是您实施的一种协议,用于为您的 UITableView 提供数据。

因此,使用UITableViewDelagate 协议,您将能够响应以下事件:选择行、编辑和其他一些事件。

使用UITableViewDataSource 协议,您将能够将数据输入您的表格。在此协议上定义的消息将由UITableView 类自动调用。

【讨论】:

【参考方案4】:

数据源采用UITableViewDataSource协议,delegate采用UITableViewDelegate协议。 UITableViewDataSource 有一个可选方法,数据源通过该方法告诉表格视图它有多少个部分(默认为一个);它还有一个必需的方法,通过它告诉表格视图每个部分有多少行。 UITableViewDelegate 协议声明了一个委托必须实现的方法,以返回表格视图在绘制特定行时使用的单元格对象。 (“表格视图单元格”提供了有关此委托任务的更多详细信息。)它还允许委托修改表格视图的可见方面。这两种协议还包括用于响应选择和点击附件视图以及管理单元格的插入、删除和重新排序的可选方法。

首先学习基础知识! - TableView Guide

【讨论】:

以上是关于UITableViewDelegate 和 UITableViewDatasource 的区别的主要内容,如果未能解决你的问题,请参考以下文章

无法覆盖 UITableViewDataSource 和 UITableViewDelegate

UITableViewDelegate 和 UITableViewDatasource 的区别

分离 UITableViewDelegate 和 UITableViewDataSource 导致没有数据显示

UIViewController 和 UITableViewDelegate 之间的通信

广义的 UITableViewDelegate 和 UITableViewDataSource

符合 Swift 中的 UITableViewDelegate 和 UITableViewDatasource?