【问题标题】:Table cells doesn't connect to outlet in iOS storyboard表格单元格未连接到 iOS 故事板中的插座
【发布时间】:2013-02-02 08:30:32
【问题描述】:

我关注了Connect outlet of a Cell Prototype in a storyboard

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

- (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;
}

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

【问题讨论】:

  • 您是否将情节提要中单元格的类更改为 HomeCell?是否调用了数据源方法?
  • 在调试器中检查单元格是正确的类并且单元格项不为零。 NSLog(@"cell class: %@", NSStringFromClass([cell class]));
  • @Zaph 它显示 homecell,故事板中的类也显示 HomeCell...
  • 但是当我这样做时 [[cell textLabel] setText:@"hi"];它显示你好
  • 但是当我点击它时它会显示 HomeCell...看起来有某种重叠发生

标签: ios uitableview uistoryboard


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 这不会导致使用情节提要中的表格单元格。
    • 在情节提要中使用原型单元格时这是不正确的。看到这个原因stackoverflow.com/questions/16503874/…
    • 作者正在询问如何从情节提要中设置一个出口......您正在描述如何以编程方式将一个类注册为表视图单元格以用于重用标识符。这是通过在原型单元上设置重用标识符在情节提要中完成的。
    猜你喜欢
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 2012-09-26
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    相关资源
    最近更新 更多