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被取消,反之亦然。