向UITableView添加行有问题



我试图将单元格添加到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];

你应该可以走了

最新更新