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

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

我不知道如何解释?

最佳答案

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

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

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

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

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

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

10-14 22:16
查看更多