在UITableView中添加新行后,UITableViewCellEditingStyle错误

时间:2011-11-01 02:56:50

标签: iphone ios uitableview

我有一个管理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];
}

想法?!

1 个答案:

答案 0 :(得分:0)

我知道这个问题有点陈旧,但我遇到了同样的问题,这就是我解决的问题: 首先 - 请不要拨打[self.tableView setEditing:animated:],因为在您拨打[super setEditing:animated:]

时已经调用了此信息

下一步 - 在致电-beginUpdates

之前,请致电[super setEditing:animated:]

下一步:摆脱你的reloadData。

这解决了我的问题,不再插入应该删除的地方。