我已经将UITableViewController
子类化,我通过segue实例化。
似乎表视图控制器被正确实例化为viewDidLoad
并且正在调用numberOfSectionsInTableView
。
实际上,numberOfSectionsInTableView
甚至被称为两次。首次调用时,它具有tableView
的有效值,当第二次调用时(第一次调用后),tableView
为nil
。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [super numberOfSectionsInTableView:tableView] + 1 ;
}
我正在使用我在Interface Builder中设置的静态单元格(在第0部分,第0行),我在第二部分(第1部分)中添加了动态行数。这就是我在[super numberOfSectionsInTableView:tableView]
添加1的原因。父的tableView类中没有自定义代码,所有内容都只是在Interface Builder中设置。
所有商店似乎设置正确:
当代码执行继续时,应用程序崩溃并显示错误消息:
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]
您对可能导致错误的原因有任何疑问吗?
答案 0 :(得分:1)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [super numberOfSectionsInTableView:tableView] + 1 ;
}
基本上意味着每次numberOfSectionsInTableView
被调用时,表格中的部分数量将增加1.这就是说,如果你在表格中只有两个部分,你会更好关闭return 2;
。
现在,你的错误。考虑到我不知道确切的上下文或错误发生的位置,这很难说,但我的第一个猜测是崩溃发生在cellForRowAtIndexPath
,因为你的数据源是nil或者是一个空数组。 / p>