当选择UITableViewCell时,如何更改textLabel?

Ike*_*Ike 8 iphone uitableview didselectrowatindexpath

我想在选择单元格时更改单元格的textLabel和detailTextLabel.我尝试了以下内容,但没有发生任何变化:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    MyAppDelegate *appDelegate = (MyPhoneAppDelegate*)[[UIApplication sharedApplication] delegate];

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.detailTextLabel.text = @"xxxxx";
    cell.textLabel.text =       @"zzzzz";
    [tableView reloadData];
}
Run Code Online (Sandbox Code Playgroud)

cra*_*erm 10

我同意,重新加载表视图实际上会转储并重新加载/显示所有单元格tableView:cellForRowAtIndexPath:并使用原始数据,而不是更新后的@"xxxxx"和@"yyyyy" tableView:didSelectRowAtIndexPath:.

在一个小测试项目中,我能够在选择时更改标签:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.textLabel.text = @"it was tapped";
}
Run Code Online (Sandbox Code Playgroud)


yon*_*nel -1

您是否尝试仅刷新选定的单元格而不是重新加载整个表格?

[cell setNeedsDisplay];

代替

[tableView reloadData];

这将具有更好的性能,但我没有,但我认为如果您刷新整个表,选择就会丢失(这可能是您最终看不到任何变化的原因)......