UITableView的声明失败selectRowAtIndexPath

我觉得这是一个需要特别注意的问题…我的Google-fu很不错,但是我一直没能得到任何有用的东西。

这是最简单的事情,但我似乎无法弄清楚问题所在。

我有一个UITableView。 这是我的VC调用_form的子视图。 我用它来造型,而不是真正的显示数据。 它有2个单元格。

在某个事件上,我试图select一个不同的单元格,使用selectRowAtIndexPath:animated:scrollPosition。

当我这样做的时候,它是SIGABRTS。

一个简单的例子:

- (IBAction)submitClicked:(id)sender { [_submit setTitle:@"Wha!?" forState:UIControlStateNormal]; NSIndexPath *row = [NSIndexPath indexPathWithIndex:0]; NSLog(@"%d", [[_form indexPathForSelectedRow] row]); [_form selectRowAtIndexPath:row animated:YES scrollPosition:YES]; } 

button的标题被​​改变,并且表格打印所选的行是0或1,但在试图select所需的单元时,它打破:

 2012-03-09 21:57:39.905 <omitted>[16329:207] 0 2012-03-09 21:57:39.908 <omitted>[16329:207] *** Assertion failure in -[NSIndexPath row], /SourceCache/UIKit_Sim/UIKit-1912.3/UITableViewSupport.m:2598 (gdb) 

我的假设是,这意味着如何configuration我的表有什么问题,但我不知道是什么。 通常在表格中select单元格(单击它)正在工作,如我的tableView:didSelectRowAtIndexPath中预期的响应所示。 除此之外,其他一切工作都正常。

(另外,我其他人回答额外的debugging信息,不只是“(gdb)”,我怎么能得到这个?)

谢谢!

一个tableview单元格的索引path需要同时有一个行和一个部分。 尝试使用工厂方法(在NSIndexPath UIKit Additions中定义)创build索引path,而不是像这样:

 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; [_form selectRowAtIndexPath:indexPath animated:YES scrollPosition:YES];