didSelectRowAtIndexPath返回错误的IndexPath

我遇到了一个非常令人费解的错误。我的UITableView的第一行返回1,第二行在indexPath中返回0!这怎么可能呢? 在我的` - (void)viewDidLoad`中,一切都还可以。我正在成功突出第一行
currentRow = 0;
[tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:currentRow inSection:0] 
  animated:NO scrollPosition:UITableViewScrollPositionNone];
我有变量
currentRow
用于跟踪选择哪一行(另一个控件根据当前选择的一个而变化)。 现在在我的`didDeselectRowAtIndexPath`委托函数中,我有:
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
...
NSLog(@"IndexPath: %@", [indexPath description]);
}
日志显示以下内容:
IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 0]
当我触摸第二排时,和
IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 1]
当我触摸第一行时。 没有行插入或删除或排序等,甚至没有滚动。它是一个简单的UITableView,分组样式,有1个部分和3行。可能是什么导致了这个? 谢谢你的帮助, 小号     
已邀请:
您已实现didDeselectRowAtIndexPath。当不再选择行时将触发它。 当您触摸第二行时,不再选择第一行,因此将显示[0,1]。 再次触摸第一行时,现在不再选择第二行,因此将显示[0,0]。 完全可以预料到这些。 如果在选择行时需要它来响应,请实现didSelectRowAtIndexPath。
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    //                                       ^
    ...

    NSLog(@"IndexPath: %@", [indexPath description]);
}
    
尽管标题,重载方法实际上是
didDeselectRowAtIndexPath
,所以听起来行为是正确的 - 当触摸第1行时,第0行被取消选择,反之亦然。     

要回复问题请先登录注册