我的自定义UITableViewCell(使用storyboard创建)中的对象为零

时间:2013-01-15 00:36:59

标签: ios uitableview storyboard

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

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

    -(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
    }
    
  7. 此方法是从我的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不应该初始化这些吗?如果没有,我应该在哪里做?

1 个答案:

答案 0 :(得分:4)

如果您要在故事板中设置单元格,则始终需要使用tableView:dequeueReusableCellWithIdentifier:forIndexPath:创建单元格,因为这是故事板创建单元格并挂接视图的位置。

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