【问题标题】:Change Cell Accessory Type?更改电池配件类型?
【发布时间】:2013-08-22 04:12:39
【问题描述】:

我有一个名为 allone.h 的表格视图,其中的单元格都是带有披露指示符的字幕样式单元格。
字幕文本是动态生成的,因此很可能每个单元格都有不同的字幕文本。

我有一个 if 语句表示 if text = "hello, world",然后将附件类型更改为 detailDisclosureIndicator。当按下detailDisclosureIndicator 时,它会推送一个新控制器,更改字幕文本,然后弹出该视图控制器并返回到allone.h。问题是,它仍然显示detailDisclosureIndicator,即使 如果 text != "hello, world"。我尝试更改viewWillAppear 中的样式,但我无法访问单元格。

这是我的代码。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//populate cells with stuff

    if([cell.detailTextLabel.text isEqualToString:@"hello, world"]){
       cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
    }
}

所以我想我的问题是,当我返回allone.h 并且单元格的文本不再是“hello, world”时,如何更改附件类型back

【问题讨论】:

  • 你试过重新加载 UITableView 吗?你不需要重新加载所有的 UITableView,只需要你想改变它的单元格。
  • @rocir:我不确定您所说的只是要更改的单元格是什么意思,但是每次 viewWillAppear 为“allone.h”时,都会重新加载表格视图。仍然在原来有文本“你好,世界”的单元格上显示详细信息披露指示符。我只是不确定将新配件类型放入哪种方法。
  • 您可以在您的 -[UITableView cellForRowAtIndexPath:] 中执行此操作。就像你的 if 语句的“else”一样。要重新加载单元格,您只需调用 reloadData 或 reloadRowsAtIndexPaths:withRowAnimation:。您是否确保在 if 语句中检查之前更改了 detailTextLabel?
  • 您必须有一个用于填充字幕的数组。您还需要替换数组内该位置的文本。因此,当下次重新加载 Tableview 时,它会获取更改的文本。
  • @rocir:就像添加一个 else 语句一样简单。如果你把它作为答案,我会接受它作为答案。

标签: ios objective-c cocoa-touch


【解决方案1】:

您可以在您的 -[UITableView cellForRowAtIndexPath:] 中执行此操作。就像你的 if 语句的“else”一样。

要重新加载单元格,您只需调用 reloadData 或 reloadRowsAtIndexPaths:withRowAnimation:。

【讨论】:

    【解决方案2】:

    我认为 cell.detailTextLable 等于 nil。所以电池配件不会改变。请仔细检查。你之前配置过单元格吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 2013-01-22
      • 1970-01-01
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多