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