【问题标题】:custom uitableviewcell will not display label texts自定义 uitableviewcell 不会显示标签文本
【发布时间】:2013-03-02 14:14:25
【问题描述】:

标签的值也为空。

我不太确定发生了什么。

这些是我的类/代码

@interface CustomEventCell : UITableViewCell{

}

@property (nonatomic, weak) IBOutlet UILabel *participant1label;
@property (nonatomic, weak) IBOutlet UILabel *participant2label;
@property (nonatomic, weak) IBOutlet UILabel *status;

@end

事件模型是

@interface Event : NSObject{
}
@property NSNumber *matchId;
@property NSString *participant1, *participant2,
-(id)init;
@end

这是填满单元格的表格视图

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"EventCell";

    CustomEventCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if(cell == nil)
    {
        cell = [[CustomEventCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // events is a NSMutableArray with Event instances
    Event *event = [events objectAtIndex:indexPath.row];

    cell.participant1label.text = event.participant1;

    return cell;
   }

这是我的设置

我必须缺少一些东西,因为我有另一个 uitableview 并且它可以毫无问题地填充自定义。我比较了它们,它们是相同的。我什至尝试回到常规标签,它会填满它,但不是这个自定义标签。

编辑:

修改了错误的复制代码。

【问题讨论】:

    标签: objective-c cocoa-touch uitableview


    【解决方案1】:

    我编写了一个简单的小测试应用程序,试图复制您希望看到的工作。我已经使用 Storyboards 提供了 here。如果您无法从中弄清楚,那么也许您可以使用测试应用程序并对其进行修改,以便它复制您所看到的不良行为。

    我对可能发生的事情的最佳猜测是,当您初始化单元格时,它没有连接到 xib 中的视图。

    尝试在以下位置设置断点:

    cell.participant1label.text = event.participant1;
    

    并通过以下方式验证 cell.participant1label 不为零:

    NSLog( @"cell.participant1label: %@", cell.participant1label );
    

    我遇到了一个小错误,其中没有显示我的自定义标签,并且 cell.participant1label 为 nil。原因是我没有将自定义表格视图单元格的标识符设置为“EventCell”。因此,我可能会建议重新检查并确保标识符确实在您的代码和 XIB 之间匹配。

    【讨论】:

    • 嗨@ericgorr,感谢您更新文件,这正是我的文件的样子,唯一的区别是我将它用于ipad并且uitableviewcontroller是一个被调用的弹出窗口。另外,我已经在几天前完成了您推荐的日志,并且显示为 nil。我有点好奇如何将它连接到视图?就像我只是做一个常规的 [cell textlabel setText:@""] 然后它会用文本填充它,但当我指定对象 uilable 时不会。
    • 使用 textlabel 时它起作用的原因是 UITableViewCell 会自动为您创建该功能。如果问题不是不匹配的标识符名称,我不确定它可能是什么。我将需要时间再次使用弹出框重新设计我的 iPad 示例项目......或者你可以这样做并提供重现问题的测试项目。
    • 嘿@ericgorr,抱歉花了一段时间。这里是。 github.com/gdubs/customtablecellerror 我很惊讶即使从头开始它仍然会遇到同样的问题。只是意味着我真的错过了一些东西。
    • 好吧,我不得不承认,我有点难过。在此之前,我没有太多玩过故事板。我同意,我们一定遗漏了一些明显的东西。作为测试,我创建了自己的 UITableView 子类,并在 popovermenuviewcontroller 中更改了表视图的类。但是,我仍然得到一个 UITableView。还将表格视图的标记值更改为 42,但是当我要求标记时,我得到了 0。看来绑定到 popovermenuviewcontroller 的表格视图不是我们认为的那个。为什么,我现在不知道。
    • 好的,我想我知道它可能是什么。在 DetailAfterPushViewController 中,您有 [[PopoverMenuViewController alloc] init]。但是,您正在创建的(可能)与您在故事板中定义的内容没有任何关系。因此,可以解决您的问题的答案是如何根据您在情节提要中定义的视图控制器来创建视图控制器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多