-3

简单的问题,

我循环遍历我的表格视图单元并将对象添加到数组中:

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'

任何帮助是极大的赞赏!

4

3 回答 3

5

如果索引路径引用当前不可见的单元格,则返回的cellForRowAtIndexPath:方法,因此UITableViewnil

[cells addObject:[self.ammoTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:j]]];

在这种情况下崩溃。

于 2013-05-14T19:29:32.367 回答
1

它会导致崩溃,因为屏幕上只有七行,当它全部添加到数组之后它返回 nil。为解决您可以做的事情是创建一个将输入作为索引路径并返回单元对象而不使用重用单元的方法。

于 2013-05-14T19:36:52.020 回答
0

魔法就在cellForRowAtIndexPath:。对于某些值,这是返回nil。检查此方法并修复它。

于 2013-05-14T19:26:38.820 回答