我已通过以下步骤在iPhone应用中创建了自定义表格视图单元格。
UILabel
和UIImageView
。UITableViewCell
。UILabel
和UIImageView
。我的自定义表格视图单元格还包含一个方法,它接收另一个对象,从中设置自己的属性:
-(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不应该初始化这些吗?如果没有,我应该在哪里做?
答案 0 :(得分:4)
如果您要在故事板中设置单元格,则始终需要使用tableView:dequeueReusableCellWithIdentifier:forIndexPath:
创建单元格,因为这是故事板创建单元格并挂接视图的位置。
直接使用其构造函数创建一个单元格,如示例代码中所示,不会从storyboard,nib等加载任何子视图。您所创建的类对Storyboard原型单元格一无所知。