ios - 何时使用 dequeueReusableCellWithIdentifier 与 deq

dequeueReusableCellWithIdentifier 有两个重载,我正在尝试确定何时应该使用一个与另一个?

关于 forIndexPath 函数的苹果文档指出,“此方法使用索引路径根据单元格在表格 View 中的位置执行附加配置。”

我不知道怎么解释?

最佳答案

最重要的区别是,如果您没有为标识符注册类或 nib,则 forIndexPath: 版本会断言(崩溃)。在这种情况下,旧的(非forIndexPath:)版本返回nil

您通过向 TableView 发送 registerClass:forCellReuseIdentifier: 来为标识符注册一个类。您可以通过向表格 View 发送 registerNib:forCellReuseIdentifier: 来为标识符注册一个 nib。

如果您在 Storyboard 中创建表格 View 和单元格原型(prototype), Storyboard 加载器会负责注册您在 Storyboard 中定义的单元格原型(prototype)。

Session 200 - What's New in Cocoa Touch from WWDC 2012讨论了(当时是新的)forIndexPath: 版本,从大约 8 分 30 秒开始。它说“你总是会得到一个初始化的单元格”(没有提到如果你没有注册类或 nib 会崩溃)。

该视频还说“它将是该索引路径的正确大小”。大概这意味着它将在返回之前设置单元格的大小,方法是查看表格 View 自己的宽度并调用您的委托(delegate)的 tableView:heightForRowAtIndexPath: 方法(如果已定义)。 这就是它需要索引路径的原因。

关于ios - 何时使用 dequeueReusableCellWithIdentifier 与 dequeueReusableCellWithIdentifier : forIndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25826383/

相关文章:

objective-c - 在 Objective-C 中创建常量的最佳方法是什么

iphone - 如何将 NSDictionary 转换为 NSData,反之亦然?

iphone - 真的不应该在生产代码上使用 NSLog() 吗?

ios - 是否可以使用 UITableViewStylePlain 禁用 UITableView

ios - UITableView、Separator颜色在哪里设置?

objective-c - 开发像 Facebook 新 iOS 应用程序中的侧滑菜单的最佳方法是什

ios - UIButton:如何使用 imageEdgeInsets 和 titleEdgeIns

objective-c - IBOutlet 和 IBAction

objective-c - cocoa objective-c类中变量前面的下划线如何工作?

iOS 应用程序错误 - 无法将自身添加为 subview