【问题标题】:Objects inside my custom UITableViewCell (created with storyboard) are nil我的自定义 UITableViewCell(使用情节提要创建)中的对象为零
【发布时间】:2012-12-29 01:20:11
【问题描述】:

我通过以下步骤在我的 iPhone 应用中创建了一个自定义表格视图单元格。

  1. 在我的故事板中,我创建了一个示例单元格,将UILabelUIImageView 拖入。
  2. 添加了新文件,我创建了UITableViewCell 的子类。
  3. 在 Interface Builder 中,我选择了我的单元格并将其类指定为我刚刚在步骤 2 中创建的类。
  4. 在我的自定义表格视图单元格的代码中,我创建了两个 IBOutlet 属性并将它们连接到我的故事板中的UILabelUIImageView
  5. 我的自定义表格视图单元格还包括一个方法,它接收另一个对象,并从中设置自己的属性:

    -(void)populateWithItem:(PLEItem *)item
    {
        if (item.state == PLEPendingItem) {
            status.text = @"Pending upload..."; //status is a UILabel IBOutlet property
        }
        else if(item.state == PLEUploadingItem)
        {
            status.text = @"Uploading...";
        }
    
        imageView.image = [UIImage imageWithContentsOfFile:item.path]; //imageView is the UIImageView IBOutlet property
    }
    

这个方法是从我的tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath as follows:调用的

    PLEPendingItemCell* cell = (PLEPendingItemCell*)[tableView dequeueReusableCellWithIdentifier:item_id];
    if (cell == nil) {
        cell = [[PLEPendingItemCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:pending_id];
    }

    [cell populateWithItem:((PLEItem*)[itemList objectAtIndex:indexPath.row])];

    return cell;

问题是单元格总是显示为空。我在 populateWithItem 中设置了一个断点,并意识到状态UILabel 和图像UIImageView 在该方法中都为零。

IB不应该初始化这些吗?如果没有,我应该在哪里做呢?

【问题讨论】:

  • 您确定情节提要中该单元格的重用标识符完全等于“item_id”的值吗?
  • 不……我刚刚发现了它……我在不同的地方有不同的重用标识符。谢谢。

标签: ios uitableview storyboard


【解决方案1】:

如果您在情节提要中设置单元格,则始终需要使用tableView:dequeueReusableCellWithIdentifier:forIndexPath: 创建单元格,因为情节提要在此处创建您的单元格并连接视图。

直接使用其构造函数创建一个单元格,如在您的示例代码中,不会从情节提要、笔尖等加载任何子视图。您创建的类对情节提要原型单元格一无所知。

【讨论】:

  • 呃……我的错。请参阅编辑后的代码。那条线一直都在。我只是按照标准方法检查可重复使用的单元格,如果没有找到则创建一个新单元格。
  • 天啊...这是那些日子之一。我在不同的地方有不同的重用标识符。 sigh 谢谢你指点我那条线。
  • 为了将来参考,当你使用原型单元格时,你永远不会从 dequeueReusableCellWithIdentifier 中得到 nil (因为它会在需要时创建一个单元格)。
猜你喜欢
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
  • 2014-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多