我在我的项目中实现了CellForRowAtIndexPath方法。
看起来像这样:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"StackTableViewCell";
Target *target = [self.fetchedResultController objectAtIndexPath:indexPath];
StackTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell)
{
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"StackTableViewCell" owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
}
cell.cellLabel.text = target.body;
cell.cellLabel.font = [UIFont fontWithName:@"Candara-Bold" size:20];[UIFont fontWithName:@"Candara-Bold" size:20];
// Configure the cell...
return cell;
}
但有些事情困扰着我,而且我并不真正理解这一部分发生了什么(我从一些教程中看到了它):
if (!cell)
{
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"StackTableViewCell" owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
}
有人可以帮我理解这个吗?
谢谢!
答案 0 :(得分:2)
如果表视图没有可重用的单元格,请加载StackTableViewCell.xib中存在的对象。假设您在顶级定义的第一个可以被实例化为您想要的单元格类型。
答案 1 :(得分:0)
if (!cell)
{
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"StackTableViewCell" owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
}
当您的单元格为零时,您正试图从笔尖加载单元格。
通常,我喜欢这样:
ViewDidLoad中的
[self.tableView registerNib:[UINib nibWithNibName:@"StackTableViewCell" bundle:nil] forCellReuseIdentifier:cellIdentifier];
所以在tableView:cellForRowAtIndexPath方法中你可以得到单元格,你不需要检查它是否为零,因为它总是返回单元格
StackTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];