iphone - Storyboard静态单元格 : dequeueReusableCellWithIdentifier returns nil

标签 iphone ios ios5 uitableview storyboard

使用 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/

相关文章:

iphone - facebook iphone sdk 注销问题!

ios - 从移动浏览器(Safari、iOS 上的 Chrome)中的 Flutter Web 应用重定向到移动应用

iphone - 将 NSString "2012-06-29"形成为 NSDate 的 "NSDateFormatterMediumStyle"?

iphone - 无法显示选项卡栏图标,即使尺寸为 30*30

iphone - 如何在后台处理调度异步进程?

iphone - NSDictionary,这是为什么

iphone - 如何在没有过渡动画的情况下执行 segue

ios - Docusign 快速集成

objective-c - 在 iPhone 中捕获和检索图像?

iphone - UIpageviewcontroller 首次加载 View 时仅在横向模式下加载单个 View