繁体   English   中英

如何更改tableview单元格文本?

[英]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之后调用任何方法,如cellForRwoAtIndexPathdidSelectRowAtIndexPath等。

如果您没有使用UILabel并且只使用cell.textLabel,您可以在cellForRowAtIndexPathMethod执行类似cell.textLabel.text = @"ChangedText"的操作。 通过检查indexPath.row确保您正在编辑所需的单元格

执行[tableView reloadData]以调用cellForRowAtIndexPath。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM