0

我已经对 an 进行了子类UITableViewController化,我正在通过 segue 对其进行实例化。

似乎表格视图控制器已正确实例化viewDidLoadnumberOfSectionsInTableView正在被调用。事实上,numberOfSectionsInTableView甚至被调用了两次。当它第一次被调用时,它有一个有效值tableView,当它第二次被调用时(在第一次调用之后),tableViewnil

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return [super numberOfSectionsInTableView:tableView] + 1 ;
}

我正在使用我在 Interface Builder 中设置的静态单元格(在第 0 节,第 0 行),我在第二节(第 1 节)中添加了动态行数。这就是为什么我将 1 添加到[super numberOfSectionsInTableView:tableView]. 父类的tableView类中没有自定义代码,一切都只是在Interface Builder中设置好了。

所有插座似乎都设置正确:

在此处输入图像描述

当代码继续执行时,应用程序崩溃并显示错误消息:

Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]

您对可能导致错误的原因有任何想法吗?

4

1 回答 1

1
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return [super numberOfSectionsInTableView:tableView] + 1 ;
}

基本上意味着每次numberOfSectionsInTableView被调用时,表中的部分数量都会增加 1。话虽如此,如果你只在表中有两个部分,你最好使用return 2;.

现在,关于你的错误。考虑到我不知道确切的上下文或错误发生的位置,这很难说,但我的第一个猜测是崩溃发生在cellForRowAtIndexPath因为你的数据源要么是 nil 要么是一个空数组。

于 2012-12-07T18:38:10.703 回答