简单的问题,
我遍历我的表格视图单元格并将对象添加到数组中:
NSMutableArray *cells = [[NSMutableArray alloc] init];
for (NSInteger j = 0; j < [self.ammoTable numberOfSections]; ++j) // loop thru sections
{
for (NSInteger i = 0; i < [self.ammoTable numberOfRowsInSection:j]; ++i)//in each section loop thru the cells
{
[cells addObject:[self.ammoTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:j]]];
}
}
这样可以正常工作,只要表格视图只有7个或更少的单元格,如果我添加8个或更多,则应用程序会将此日志与控制台崩溃:
'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
非常感谢任何帮助!
答案 0 :(得分:5)
如果索引路径引用当前不可见的单元格,则cellForRowAtIndexPath:
的{{1}}方法会返回UITableView
,因此
nil
在那种情况下崩溃。
答案 1 :(得分:1)
它会导致崩溃,因为屏幕上只有七行,当它全部添加到数组后,它返回nil。解决你可以做的是创建一个方法,它将输入作为索引路径并返回单元格对象而不使用重用单元格。
答案 2 :(得分:0)
魔法在cellForRowAtIndexPath:
。对于某些值,这将返回nil
。检查此方法并进行修复。