使用 Storyboard,静态单元格,在cellForRowAtIndexPath:
这一行
UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
总是返回nil
。
我检查了以下内容:
- 在 IB/Storyboard 中正确设置了单元格标识符,我在代码中使用了相同的标识符。我多次验证了这一点。
- 我没有在别处实例化 View Controller (这是 this stackoverflow question 中的问题)。
我的 View Controller 是 UITableViewController
的子类,当然,包装在 Storyboard 中的 ad hoc 导航 Controller 中。怀疑我的 View Controller 不知何故不知道 Storyboard 中定义的单元格标识符,因为它可能是另一个实例,这里是“实例化”它的代码。在 prepareForSegue:
中,我使用
CustomViewController *vc = [[[segue destinationViewController]
viewControllers] objectAtIndex:0];
此处完成的 View Controller 的其他自定义(设置属性等)工作正常。
我正在使用静态单元格,因为部分和行数不会改变,并且每个单元格都包含静态文本(以及其他要编辑的控件或文本字段)。
在我看来,这是一项非常常见的任务(在 View Controller 的数据源方法中从 Storyboard自定义静态单元格)。我做错了什么?
最佳答案
对于 TableView 中的静态内容,您无需实现任何数据源方法(包括 tableView:cellForRowAtIndexPath:
,因此您永远不会使单元格出队。静态内容不会出队(无论如何,你都可以参与其中)。
如果你想获得指向特定单元格的指针:
使用
cellForRowAtIndexPath:
从 TableView 中获取它:UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
有一个特定单元格的 socket 并直接对其进行定制。
- 遍历单元格并检查
reuseIdentifier
属性以获取您感兴趣的单元格。
任何这些事情都可以在 viewWillAppear 或类似的地方完成。
如果您希望单元格中的内容与 Storyboard上的内容完全不同,那么静态单元格可能不是正确的选择。您应该使用动态原型(prototype)(注意 Storyboard中可以有多个原型(prototype))和传统数据源方法。
关于iphone - Storyboard静态单元格 : dequeueReusableCellWithIdentifier returns nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9993669/