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];