如何在编辑模式下在UITableView中添加额外的单元格?

时间:2009-09-21 10:26:15

标签: iphone objective-c cocoa-touch uitableview

在表格进入编辑模式后,您知道如何在表格视图中显示某些单元格吗?就像编辑联系人时“iPhone”应用程序所做的那样。

也许我错了,但在编辑联系人时,它看起来像是使用了分组的​​UITableView。

我试过了:

[self.tableView setEditing:YES animated:YES];
[self.tableView insertSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationBottom];

我的表在没有编辑时只有1个部分,我想在编辑时添加一个额外的部分(为了保持简单),但上面对'insertSections'的调用崩溃了(我的所有表委托都考虑了1或2个部分很好,取决于self.editing,我尝试在正常模式下显示两个部分,它工作正常)

对于'numberOfSectionsInTableView',我有:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    if (!self.editing) return 1;
    return 2;
}

1 个答案:

答案 0 :(得分:4)

你在哪里进入tableView的编辑状态?你应该在 - [UINavigationController setEditing:animated:]:

中进行
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
    [self.tableView setEditing:editing animated:animated];

    if(editing){
        [self.tableView insertSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationBottom];
    } else {
        // delete section
    }
}

因此,不要在tableView上调用setEditing,而是在navigationController上调用它(可能是self)然后控制器将处理编辑模式。

因此控制器具有编辑模式,而tableView具有。一旦以编程方式设置,或者当用户滑动以删除行时,tableView将处于编辑模式。在后一种情况下,控制器在编辑模式下,但 tableView