willSelectRowAtIndexPath不会改变detailTextLabel

时间:2014-07-08 21:12:50

标签: ios objective-c uitableview

我正在使用willSelectRowAtIndexPath委托方法更改所选单元格的detailTextLabel,即我将\U0001F44D分配给所选单元格的detailTextLabel.text并指定{{ 1}}到先前选择的单元格,问题是前一个单元格被分配@""@""没有出现在新选择的单元格上,代码如下:

\U0001F44D

2 个答案:

答案 0 :(得分:2)

永远不要像这样直接更改单元格内的任何值。更改模型(基础数据),然后在选择发生后(即在runloop完成后),在表上调用reloadData,以便表获取通过通常方式调用cellForRowAtIndexPath:来获取正确的新值。

答案 1 :(得分:-1)

你应该使用DidSelectRowAtIndexPath而不是WillSelectRowAtIndexPath

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

    NSIndexPath *index = [NSIndexPath indexPathForRow:self.selectedCalcMethod inSection:0]; // index of previously selected cell

    [self.mainTable cellForRowAtIndexPath:index].detailTextLabel.text=@"";
    [self.mainTable cellForRowAtIndexPath:indexPath].detailTextLabel.text =@"\U0001F44D";

    return indexPath;
}