在numberOfSectionsInTableView之后崩溃在UITableViewController中

时间:2012-12-07 17:15:13

标签: objective-c ios uitableview uiviewcontroller uikit

我已经将UITableViewController子类化,我通过segue实例化。

似乎表视图控制器被正确实例化为viewDidLoad并且正在调用numberOfSectionsInTableView。 实际上,numberOfSectionsInTableView甚至被称为两次。首次调用时,它具有tableView的有效值,当第二次调用时(第一次调用后),tableViewnil

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

我正在使用我在Interface Builder中设置的静态单元格(在第0部分,第0行),我在第二部分(第1部分)中添加了动态行数。这就是我在[super numberOfSectionsInTableView:tableView]添加1的原因。父的tableView类中没有自定义代码,所有内容都只是在Interface Builder中设置。

所有商店似乎设置正确:

enter image description here

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

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

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

1 个答案:

答案 0 :(得分:1)

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

基本上意味着每次numberOfSectionsInTableView被调用时,表格中的部分数量将增加1.这就是说,如果你在表格中只有两个部分,你会更好关闭return 2;

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