UITableViewDelegate tableView:heightForRowAtIndexPath:插入单元格时崩溃

时间:2014-07-27 21:47:05

标签: ios objective-c uitableview heightforrowatindexpath

我有一个包含各种部分和单元格样式的表视图,即iOS设置应用程序。

我遇到了heightForRowAtIndexPath的问题。如果我包含它,每当我尝试插入一个单元格时,应用程序就会崩溃:

2014-07-27 17:24:48.660 Schoodle[413:31582] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

但是,因为表视图有这么多单元格,我需要实现该方法。例如,大多数细胞高44px,但我有日期选择器细胞,并不总是可见,高216px。如果我使用自动布局,单元格的高度很好,但插入单元格的动画是跳跃的。

之前我没有遇到此问题,但决定将表格视图中的一个部分拆分为两个不同的部分。现在,每当我尝试插入一个单元格时,应用程序就会崩溃。这种情况以前没有发生过,只有在实现了heightForRowAtIndexPath或estimatedHeightForRowAtIndexPath时才会发生。

我找到了这个 UITableView insertRowsAtIndexPaths throwing __NSArrayM insertObject:atIndex:'object cannot be nil' error 但它没有其他选择 - 它只是说不要实现我需要做的heightForRowAtIndexPath。有什么方法可以解决这个问题吗?

修改 添加了heightForRowAtIndexPath的实现 - 它没什么复杂的(我有一些截面和行的枚举,datePickerIndex是日期选择器的行,如果它不存在则为零)

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == ScheduleEditorSectionDates && self.datePickerIndex && indexPath.row == self.datePickerIndex) return 216.0f;
    return 44.0f;
}

0 个答案:

没有答案