我觉得这是一个需要特别注意的问题...我的Google-fu非常好,但我没有得到任何有用的东西。
这是最简单的事情,但我似乎无法弄清楚问题是什么。
我有一个UITableView。这是我的VC调用_form的子视图。我将它用于样式目的,而不是真正用于显示数据。它有2个单元格。
在某个事件上,我正在尝试使用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];
}
按钮的标题已更改,并且该表打印所选行为0或1,但在尝试选择所需的单元格时,它会中断:
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)
我的假设是,这意味着我的表格配置方式有问题,但我不确定是什么。通常(单击它)选择表格中的单元格正在工作,如我的tableView:didSelectRowAtIndexPath中的预期响应所示。除了这个以外,其他所有设置工作正常。
(另外,我的其他人回复了额外的调试信息,而不只是“(gdb)”。我怎么能得到这个?)
谢谢!
答案 0 :(得分:18)
tableview单元格的索引路径需要同时包含行和节。尝试使用工厂方法(在NSIndexPath UIKit Additions中定义)创建索引路径,而不是:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[_form selectRowAtIndexPath:indexPath animated:YES scrollPosition:YES];