我试图将单元格添加到UITableView而不重新加载表。我已经能够添加一个对象,但如果我删除一个对象,然后尝试添加另一个对象,它不起作用,我得到下面列出的错误信息。下面是我用来添加一行和删除一行的代码:
添加一行:
-(void)addSelected:(UIButton *)sender {
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:self.periodArray.count inSection:0];
[self.classTableView beginUpdates];
NSLog(@"Previous Period count: %lu", (unsigned long)self.periodArray.count-1);
[self.periodArray addObject:@"Period 8"];
NSArray *newResults = [NSArray arrayWithObjects:indexPath, nil];
[self.classTableView insertRowsAtIndexPaths:newResults withRowAnimation:UITableViewRowAnimationNone];
[self.classTableView endUpdates];
self.classTableView.frame = CGRectMake(0, 0, 320, 44*[self.periodArray count]+63);
}
删除:- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
[self.classTableView beginUpdates];
[self.periodArray removeObjectAtIndex:indexPath.row];
[self.classTableView deleteRowsAtIndexPaths: @[ indexPath ] withRowAnimation: UITableViewRowAnimationAutomatic];
NSLog(@"Period count after delete: %lu", (unsigned long)self.periodArray.count);
[self.classTableView endUpdates];
}
错误信息:
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 6 beyond bounds [0 .. 5]'
从底层数组中删除您的行在之后从表中删除它。
:
[self.classTableView deleteRowsAtIndexPaths: @[ indexPath ] withRowAnimation: UITableViewRowAnimationAutomatic];
[self.periodArray removeObjectAtIndex:indexPath.row];
你应该可以走了