自定义UITableViewCell不显示任何内容

时间:2014-07-15 14:33:58

标签: ios objective-c uitableview

我做完了我的作业,我以为我控制了一切。 当我运行我的项目时一切正常,但自定义UITextView中的UITableViewCell为空。

以下是重要的代码:

[self.tableView registerClass:[NewsCell class]forCellReuseIdentifier:@"NewsCell"];

然后:

NewsCell *cell = [tableView dequeueReusableCellWithIdentifier:@"NewsCell" forIndexPath:indexPath];

NSDictionary *newsObject = [_newsArray objectAtIndex:indexPath.row];
NSString *title = [newsObject objectForKey:@"newsTitle"];

NSLog(@"title: %@", title); // This puts out the correct stuff

[cell.newsTeaser setText:title];

但是newTeaser UITextView显示为空。为什么这个和我犯了什么错误? 我应该在第一次在iOS 7中制作自定义单元格时添加...

2 个答案:

答案 0 :(得分:3)

根据我的经验,这经常发生,因为您正在实施错误的init方法。请注意,UITableViewCell的指定初始化程序为initWithStyle:reuseIdentifier:。如果您要添加自定义视图层次结构而不是懒惰或在此初始化设备中,则不会创建您的视图。

如果你的单元格也应该与界面构建器兼容,你也应该实现awakeFromNib

//编辑: 但是,如果您正在使用注释中所述的界面构建器,那么您使用了错误的注册方法。registerClass:forCellReuseIdentifier:仅用于通过代码创建类。如果存在包含自定义单元格布局的xib文件,则需要使用registerNib:forCellReuseIdentifier:注册该xib文件。如果您使用故事板,则根本不必注册该单元格。您只需在故事板文件中指定单元格reuseIdentifier

答案 1 :(得分:0)

如果从API端点获取数据,则可能是您的调用块在主/ UI线程上发生,因此在等待调用块完成获取数据时会阻止UI。

如果是这种情况,你需要在你的块方法中使用dispatch_async,如下所示:

    dispatch_async(dispatch_get_main_queue(), ^{
        [self.tableView reloadData];
    });