[英]How to alter tableview cell text?
我有一个UITableView,我想在我做其他处理后改变一些静态单元格。 我为我要修改的单元格设置了出口,但是当我使用NSLog查看它们时,它们显示为nil,这表明我没有正确的单元格。 例如,在下面的图像中,我想将标签的开始时间添加到标签中,就像我为Date所做的那样(日期是在创建我获得当前日期的单元格时完成的),
我点击了披露指示器,它带我到另一个场景(这是在故事板中创建的,使用segues从一个场景到另一个场景),我得到了我需要的两次。 然后我返回主场景(显示)并尝试更改开始时间标签,但没有任何反应。 尝试更改它之前标签的NSLog返回:
oStartTimeCell.textLabel.text :( null)
我在其中一篇Apple文档中读到这个文本域是只读的。 如果在这种情况下确实如此,有没有办法可以用更新的信息重新加载单元格? 或者还有另一种方法吗?
你使用的是错误的方法。 您不应使用插座创建对单元格的引用。 一旦单元格移出可见视图,插座将为空或包含垃圾数据。 即使(在你的情况下)单元格永远不会移出视图,我认为它表明你正试图以一种不应该的方式使用UITableView。
而是将您想要在单元格中显示的数据放在dataSource中,例如数组。
tableView应该使用dataSource来配置单元格的textLabels中显示的值。 一旦想要更新单元格中显示的文本,更改dataSource中的值并在tableView上调用reloadData
以强制tableView调用-tableView:cellForRowAtIndexPath:
和相关的UITableViewDataSource方法。
尝试为每个单元格创建一个IBOutlet并连接它:
IBOutlet UITableViewCell *cell1;
IBOutlet UITableViewCell *cell2;
IBOutlet UITableViewCell *cell3;
并将您的方法更改为:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(indexPath.row == 0) return cell1;
if(indexPath.row == 1) return cell2;
if(indexPath.row == 2) return cell3;
if (cell == nil) {
//create cell;
}
return cell;
}
您使用UILabel显示文本吗? 。 如果您只是创建UIlabel
的出口并更新它,则在加载tableView之后调用任何方法,如cellForRwoAtIndexPath
或didSelectRowAtIndexPath
等。
如果您没有使用UILabel并且只使用cell.textLabel,您可以在cellForRowAtIndexPathMethod
执行类似cell.textLabel.text = @"ChangedText"
的操作。 通过检查indexPath.row
确保您正在编辑所需的单元格
执行[tableView reloadData]
以调用cellForRowAtIndexPath。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.