【问题标题】:UITableViewCell not displaying my dataUITableViewCell 不显示我的数据
【发布时间】:2014-07-17 20:41:58
【问题描述】:

在我的 TableViewController 中,我通过情节提要设置了 TableViewCell。而在…cellForRowAtIndexPath的方法中我做到了

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath`
{
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"my_identifier" forIndexPath:indexPath];
  UILabel *myTitle = (UILabel *)[cell.contentView viewWithTag:1];
  UITextView *myDetail = (UITextView *)[cell.contentView viewWithTag:2];
  //…more stuff
  myTitle.text = item.title;
  myDetail.text = item.detail;
  return cell;
}

当我在情节提要中设置 TableViewCell 时,我通过属性检查器设置标签。无论如何,此时我正在通过 NSLog 记录所有内容,以便我知道我的数据存在,myTitle 确实包含标题等。例如以下日志记录工作

NSLog(@“my title after passing it to myTitle is %@“, myTitle.text);

所以我正在全面记录。但是无论出于何种原因,当我运行代码时,单元格都没有显示在表格中。一直说没有数据。

此时唯一有意义的是,例如,myTitle 不是指向单元格中包含的标题的指针。那么有没有办法将myTitle的内容设置回单元格呢?我知道我错过了一些东西。我只是不知道它是什么。

更新

所以我根据this youtube video 创建了一个 UITableViewCell 的子类。仍在记录所有内容,我的记录显示一切都应该正常工作,但表格仍然没有显示任何内容。除了“没有结果”。就好像单元格不属于表格,但它在文档大纲中:表格视图 > 视图 > 自定义表格视图单元格 - my_identifier > 内容视图 > [我的孩子视图]

【问题讨论】:

  • 我知道这与您的问题无关 - 只是一个一般性建议。为什么不在CustomTableViewCell 上使用 IBOutlet 属性?您可以为 UILabel 创建一个 IBOutlet,将其命名为 myTitle,并将其作为属性放在 CustomTableViewCell 中。然后在你的 cellForRowAtIndexPath 中,你可以使用 cell.myTitle 而不是 viewWithTag
  • @LyricalPanda 您所说的可能有效,但我将如何“将其作为 CustomTableViewCell 中的属性”?我正在考虑它,但我没有看到它。如果这能解决问题,我很乐意放弃标签内容。
  • 一些想法:确保您已注册单元格以便在表格中重复使用。如果它是情节提要中的原型单元,请务必给它一个标识符。在界面生成器中仔细检查单元格的标识符。尝试给我们将单元格出列的代码,以便其他人可能查明问题
  • @KatedralPillon 这不会解决您的问题,只是一个建议,以帮助您的代码更易于维护和使用 IBOutlets 的强大功能,因为您使用的是故事板。这是一张专辑的样子:imgur.com/a/r9ECf#0。它显示了将其作为属性添加到 .h,确保 Storyboard 中 UITableViewCell 上的属性链接到 UILabel,然后如何在 cellForRow 中使用它。
  • @iFeli 你让它听起来像一个两步过程。我想通过设置标识符来设置单元格以供重用。还有其他地方可以设置它以供重复使用吗?

标签: ios objective-c uitableview


【解决方案1】:

在 .h 文件中为您的 tableView 创建 IBOutlet,在 .m 文件中为 @synthesize 它创建 IBOutlet

viewWillAppear内添加如下代码

tableView.dataSource = self;
tableView.delegate = self;
[tableView reloadData];

对于表格中的单元格,请确保您的标签与单元格相连

您的标签在 .h 文件中链接为一个 IBOutlet,在 .m 文件中也链接为 @synthesize

或者只是在单元格的contentView 中初始化并创建您的标签:

UILabel * mytitle = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 200, 25)];
mytitle.text = item.title;
mytitle.textColor = [UIColor blackColor];
[cell.contentView addSubview mytitle];

【讨论】:

  • 如果您使用@property,则不必使用@synthesize
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多