0

我在情节提要中遵循了 Cell Prototype 的 Connect 插座

所以我的插座是连接的。我有这个方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    HomeCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    if (cell == nil) {
        cell = [[HomeCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"] ;
    }

    // Configure the cell.
    Group * group = [self.groups objectAtIndex: [indexPath section]];
    Friend  * friend = [[group friends ]objectAtIndex: [indexPath row]];
    NSLog(@"%@", friend.name);

    [[cell nameLabel] setText:friend.name];
    [[cell statusLabel] setText:friend.status];
    [[cell picImageView] setImage:[UIImage imageNamed:@"similey.jpg"]];
    return cell;
}

它编译得很好,但单元格显示为空白,其中没有任何内容。有什么建议么?

4

2 回答 2

0

您是否将情节提要中单元格的标识符设置为“Cell”以匹配您的 dequeueReusableCellWithIdentifier 调用?

Interface Builder 创建对象,然后允许您复制它们。它不会改变类的定义。因此,如果您在 Interface Builder 中设计一个类的实例,那么您只是在设计该单个实例。加载 Storyboard 和 NIB 是您可以用来复制该实例的机制。

在 IB 中设计一个类的实例,然后再去执行该类的直接 alloc+init 将导致一个实例完全独立于 Interface Builder 中的实例。

以下代码行向我表明,您希望情节提要中的实例对直接分配 + 初始化您的类时发生的情况产生影响:

[[HomeCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"]

如果你曾经触及那条线,那可能是你的问题。如果您在情节提要中创建了单元格,则该行不应该存在。对于在故事板中创建的单元格,-dequeueReusableCellWithIdentifier: 将始终返回单元格的实例,前提是您匹配了标识符。

于 2013-02-18T23:31:04.613 回答
-2

由于 HomeCell 是一个自定义 UITableViewCell 它不会在重用队列中,因此您的表格视图将需要通过 registerClass 方法了解它,如下所示:

- (void)viewWillAppear:(BOOL)animated
{
   ...
   [self.tableView registerClass:[HomeCell class] forCellReuseIdentifier:@"Cell"];

}
于 2013-02-18T00:42:12.050 回答