细胞选择样式在第二次点击时改变

时间:2011-05-16 21:22:41

标签: iphone objective-c cocoa-touch uitableview

在我的表格视图中,我在

中设置选择样式
- (void)tableView:(UITableView *)iTableView didSelectRowAtIndexPath:(NSIndexPath *)iIndexPath {

MyCell *aCell = (MyCell *)[iTableView cellForRowAtIndexPath:iIndexPath];
aCell.selectionStyle = UITableViewCellSelectionStyleBlue;

现在,选择样式在第二次点击时更改,而不是在第一次点按时更改。一旦单元格被轻敲,那么如果你回来再次选择它就可以正常工作。这是什么原因?

1 个答案:

答案 0 :(得分:3)

猜测这样做的原因是,当单元格已经选中时,会调用tableView:didSelectRowAtIndexPath:方法(惊喜!)。因此,默认选择样式应用之前首次调用方法,即在执行aCell.selectionStyle = UITableViewCellSelectionStyleBlue之前。当选择样式改变一次时,显然它仍然用于后续调用(轻击)。要解决此问题,您必须在tableView:cellForRowAtIndexPath:tableView:willSelectRowAtIndexPath:方法中设置选择样式,在选择单元格之前调用这些方法。