更改电池配件类型?
Posted
技术标签:
【中文标题】更改电池配件类型?【英文标题】: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 语句一样简单。如果你把它作为答案,我会接受它作为答案。 【参考方案1】:您可以在您的 -[UITableView cellForRowAtIndexPath:] 中执行此操作。就像你的 if 语句的“else”一样。
要重新加载单元格,您只需调用 reloadData 或 reloadRowsAtIndexPaths:withRowAnimation:。
【讨论】:
【参考方案2】:我认为 cell.detailTextLable 等于 nil。所以电池配件不会改变。请仔细检查。你之前配置过单元格吗?
【讨论】:
以上是关于更改电池配件类型?的主要内容,如果未能解决你的问题,请参考以下文章