我有一个自定义控制器,用于管理tableView,一旦进入编辑模式,它会添加新行(用于插入新记录)。问题是刚刚添加的一行下面的行也与UITableViewCellEditingStyleInsert一起显示。我可以通过调用reloadData来修复显示问题,但是我松开了框架提供的炫酷动画:P
我也尝试使用延迟,但结果很糟糕:(

以下是我的重写方法:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];

    [self.tableView setEditing:editing animated:animated];
    [self.tableView beginUpdates];

    NSIndexPath *path = [NSIndexPath indexPathForRow:2 inSection:0];
    NSArray *paths = [NSArray arrayWithObject:path];

    if (editing) {
        GTMLoggerDebug(@"add row");
        [self.tableView insertRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationAutomatic];
    } else {
        GTMLoggerDebug(@"remove row");
        [self.tableView deleteRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationAutomatic];
    }

    [self.tableView endUpdates];
    [self.tableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.4];
}


想法?!

最佳答案

我知道这个问题有些陈旧,但是我遇到了同样的问题,这就是我解决的方法:
首先-不要呼叫[self.tableView setEditing:animated:],因为当您呼叫[super setEditing:animated:]时已经被呼叫

下一步-在呼叫-beginUpdates之前先呼叫[super setEditing:animated:]

下一步:摆脱您的reloadData。

这为我解决了问题,不再需要在应删除的位置插入。

07-24 14:18