didSelectRowAtIndexPath返回错误的IndexPath

Mun*_*ndi 70 iphone objective-c uitableview didselectrowatindexpath nsindexpath

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

在我的` - (void)viewDidLoad`中,一切都还可以.我正在成功突出第一行

currentRow = 0;
[tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:currentRow inSection:0] 
  animated:NO scrollPosition:UITableViewScrollPositionNone];
Run Code Online (Sandbox Code Playgroud)

我有currentRow用于跟踪选择哪一行的变量(另一个控件根据当前选择的一个而变化).

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

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

日志显示以下内容:

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

没有行插入或删除或排序等,甚至没有滚动.它是一个简单的UITableView,分组样式,有1个部分和3行.可能是什么导致了这个?

谢谢你的帮助,
S

ken*_*ytm 229

你已经实现de selectRowAtIndexPath.当不再选择行时将触发它.

当您触摸第二行时,不再选择第一行,因此将显示[0,1].
再次触摸第一行时,现在不再选择第二行,因此将显示[0,0].

完全可以预料到这些.

实施选择 RowAtIndexPath如果你需要的是一排时,应对选择.

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

    NSLog(@"IndexPath: %@", [indexPath description]);
}
Run Code Online (Sandbox Code Playgroud)

  • 嘿 - 当我自己读到这个问题时,我想错了.:-)当它被使用两次时,它就像错过了"the"这个词.;-) (15认同)
  • 我花了几个小时试图弄清楚iOS是用我之前选择的行来打电话给我的.我试过一切.令人惊讶的是几个字母的差异.谜团已揭开. (4认同)
  • 我也是这样做的.多么令人沮丧.Intellisense 99.9%的时间很棒但是其他的.1%......哇. (3认同)
  • 我也是这样做的...应该明智地使用AutoComplete .. (2认同)