2

我正在使用 Storyboard 做一个简单的应用程序,它有一个 View 和一个UITableViewwith a 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 中的单元格来执行此操作吗?

谢谢。

4

3 回答 3

5

你是对的; 如果您使用情节提要,则该代码保证返回非零单元格。此外,在 iOS 6 中,新调用dequeueReusableCellWithIdentifier:forIndexPath: 永远不会返回 nil。请参阅我书中的讨论:

http://www.aeth.com/iOSBook/ch21.html#_registering_a_cell_class

于 2013-02-13T23:36:56.893 回答
0

如果你已经在表格视图的原型单元格中声明了你的 UITableViewCell ,那么它已经被分配并且只需要出列。如果您使用自定义 UITableViewCell 子类,则必须检查它是否为 nil 并在必要时分配新实体。

于 2013-02-13T23:36:45.287 回答
0

不,在使用情节提要中制作的单元格时,您不需要该代码。

最好删除此代码,以便如果identifier您在界面构建器中提供给单元格并且您在代码中使用的标识符曾经漂移,那么您会尽早崩溃。此代码段将掩盖此错误,并仅提供您最可能不打算拥有的单元格。

于 2013-02-13T23:38:57.863 回答