didSelectRowAtIndexPath返回错误的IndexPath

我遇到了一个非常令人费解的错误。 我的UITableView的第一行返回1第二个在indexPath中返回0 ! 这怎么可能呢?

在我的 – (void)viewDidLoad中,一切都很好。 我正在强调第一排成功

currentRow = 0; [tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:currentRow inSection:0] animated:NO scrollPosition:UITableViewScrollPositionNone]; 

我有variablescurrentRow跟踪哪一行被选中(另一个控件根据当前select哪一个而改变)。

现在在我的`didDeselectRowAtIndexPath`委托函数中我有:

 -(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath { ... NSLog(@"IndexPath: %@", [indexPath description]); } 

日志显示如下:

当我触摸第二行时IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 1]当我触摸第一行时IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 1]

有没有行插入或删除或sorting等,甚至不滚动。 这是一个简单的UITableView,分组风格,有1节和3行。 什么可能导致这个?

谢谢你的帮助,
小号

你已经实现了De selectRowAtIndexPath 。 当该行不再被选中时,它将被触发。

当您触摸第二行时,第一行不再被选中 ,因此会显示[0,1]。
当您再次触摸第一行时,现在不再select第二行,因此将显示[0,0]。

这些是完全预期的。

如果在select行时需要它进行响应,则执行“ select RowAtIndexPath” 。

 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // ^ ... NSLog(@"IndexPath: %@", [indexPath description]); } 

尽pipe标题,重载的方法实际上是didDeselectRowAtIndexPath ,所以它听起来像行为是正确的 – 当第一行被触摸,0被取消,反之亦然。

Interesting Posts