我正在尝试让我的应用iOS8准备就绪,但遇到了一个奇怪的问题。我的表使用静态单元格,但是我在代码中调整了很多东西。这个表中的一个基本功能是我的datePickerCell。这类似于Apple的日历应用程序。当您单击包含日期的单元格时,下面的单元格将调整为DatePicker的高度并显示。再次单击单元格后,它将再次调整大小并隐藏。但是,当我使用此代码时,我的应用程序崩溃并出现错误:
*** Assertion failure in -[UITableView _classicHeightForRowAtIndexPath:], /SourceCache/UIKit_Sim/UIKit-3318/UITableView.m:10772
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if(indexPath.section == 1 && indexPath.row == 2){
if(self.datePickerEdit){
return 164;
} else {
return 0;
}
} else if(indexPath.section == 1 && indexPath.row == 3){
return 2 * self.tableView.rowHeight;
} else {
return self.tableView.rowHeight;
}
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
BOOL changeOfPicker = NO;
if(indexPath.section == 1 && indexPath.row == 1){
self.datePickerEdit = !self.datePickerEdit;
//This is only necessary since it has to be hidden during initial load
if(self.expenditureDatePicker.hidden) self.expenditureDatePicker.hidden = NO;
changeOfPicker = YES;
}
if(changeOfPicker){
[UIView animateWithDuration:.4 animations:^{
[self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:indexPath.row+1 inSection:indexPath.section]] withRowAnimation:UITableViewRowAnimationFade];
[self.tableView reloadData];
}];
}
}
当我使用与上面相同的代码添加完整的estimatedHeightForRowAtIndexPath方法时,它仍然会崩溃。但是,如果我注释掉整个heightForRowAtIndexPath(和estimatedHeightForRowAtIndexPath),我的应用程序可以工作。但是,单元格将无法正确调整大小,这是不行的。
我该如何解决这个问题?!