UITableView selectRowAtIndexPath 的断言失败
Posted
技术标签:
【中文标题】UITableView selectRowAtIndexPath 的断言失败【英文标题】:Assertion Failure for UITableView selectRowAtIndexPath 【发布时间】:2012-03-10 06:09:25 【问题描述】:我觉得这是一个需要特别注意的问题……我的 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)”。我怎样才能得到这个?)
谢谢!
【问题讨论】:
【参考方案1】:tableview 单元格的索引路径需要同时包含行和部分。尝试使用工厂方法(在NSIndexPath UIKit Additions 中定义)创建索引路径,如下所示:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[_form selectRowAtIndexPath:indexPath animated:YES scrollPosition:YES];
【讨论】:
谢谢,真是令人沮丧。这就是我过分依赖代码提示告诉我的内容。它从来没有建议过那个。 >:-(以上是关于UITableView selectRowAtIndexPath 的断言失败的主要内容,如果未能解决你的问题,请参考以下文章
UItableview 单元格的动态高度与 UItableview 单元格内的 UItableview
水平 UITableView 中的垂直 UITableView
如何与重叠显示的 UITableView 交互另一个 UITableView