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/