ios - 为什么 tableView :cellForRowAtIndexPath: and tableView:heightForRowAtIndexPath: do not belong to the same protocol?

标签 ios objective-c swift uitableview protocols

我知道这可能是一个愚蠢的问题,但在设计方面,为什么 Apple 将这两种方法放在不同的协议(protocol)中?

类和单元格的高度怎么可能是不同的职责呢?

最佳答案

它不是类和高度,而是内容(又名数据源)和高度(UITableView 委托(delegate)的一部分)。

举个简单的例子,假设您有 UITableviewCell 的子类,并在您的自定义类中定义所有标签和内容。 使用 cellForRowAtIndexPath 唯一要做的就是插入数据源并填充单元格的每个元素。

HeightForRowAtIndexPath 只是更大的 UITableView 委托(delegate)的一小部分,它更多地是关于处理单元格上的操作(选择、取消选择、编辑)而不是 ui。

虽然文档对此很清楚: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewDataSource_Protocol/ https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewDelegate_Protocol/

一个是代表,另一个不是。

关于ios - 为什么 tableView :cellForRowAtIndexPath: and tableView:heightForRowAtIndexPath: do not belong to the same protocol?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35010909/

相关文章:

objective-c - IOS 自定义单元格,其标签在重复使用单元格时显示错误文本

swift - UIGestureRecognizer 导致未捕获的异常错误

ios - Objective-c Storyboard - UITableViewController 中的导航栏未出现

objective-c - Objective-C 中的属性声明

swift - 动画标签以增加和减小尺寸

json - 使用 ObjectMapper 的不同类型 JSON 文件

ios - UILongPressGestureRecognizer 无法识别 .ended 状态

ios - 带有 subselect 语句的 SQL 的 SQLite 列名现在以表名作为列名的前缀

ios - Xcode 升级/Swift 2 到 3 迁移破坏了 Storyboard socket 连接,我如何一次修复它们?

ios - Swift-NIO 安全的 websocket 服务器