我正在使用Storyboard创建一个简单的应用程序,其中包含UITableView
和UITableViewCell
的视图,可以导航到另一个UIView
。
所以必须编写代码来填充表格视图中的单元格。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"SampleCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
NSLog(@"cai no init da cell");
}
GPItem *item = [self.items objectAtIndex:indexPath.row];
cell.textLabel.text = @"Post";
cell.detailTextLabel.text = item.imageURL;
return cell;
}
我意识到代码if (cell == nil) { ...
从未执行过,所以我真的需要在使用Storyboard中的单元格时这样做吗?
感谢。
答案 0 :(得分:5)
你是对的;如果您使用的是故事板,则可以保证该代码返回非零单元格。此外,在iOS 6中,新调用dequeueReusableCellWithIdentifier:forIndexPath:
从不返回nil。请参阅我的书中的讨论:
http://www.apeth.com/iOSBook/ch21.html#_registering_a_cell_class
答案 1 :(得分:0)
如果你已经在表视图的原型单元格中声明了UITableViewCell,那么它已经被分配,只需要出列。如果您正在使用自定义UITableViewCell子类,那么您必须检查它是否为零并在必要时分配新实体。
答案 2 :(得分:0)
在使用故事板中制作的单元格时,您不需要该代码。
最好删除此代码,以便在界面构建器中为单元格提供的identifier
和代码中使用的标识符漂移时,您可以尽早崩溃。该片段将掩盖此错误,只提供您可能不想要的单元格。