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

Posted

技术标签:

【中文标题】如何在编辑模式下在 UITableView 中添加额外的单元格?【英文标题】:How to add extra cells in a UITableView in editing mode? 【发布时间】:2009-09-21 10:26:15 【问题描述】:

您知道如何在表格进入编辑模式后让一些单元格出现在表格视图中吗?就像编辑联系人时的“联系人”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】:

你是从哪里进入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 将处于编辑模式。在后一种情况下,controller处于编辑模式,但 tableView处于

【讨论】:

太棒了!实际上,问题在于与编辑模式中的内容混淆。非常感谢! 我是否必须继承 UINavigationController 或将您提出的代码放在哪里?谢谢 这里显示的代码用在UITableViewController的子类中,它可能是UINavigationController的子控制器。 UINavigationController 处理显示导航栏和当前视图(控制器),您不需要子类。 UITableViewController 但是处理 tableview 的所有信息,因此您确实需要该类的子类。

以上是关于如何在编辑模式下在 UITableView 中添加额外的单元格?的主要内容,如果未能解决你的问题,请参考以下文章

UITableView处于编辑模式时如何更新减号的背景? [复制]

如何在编辑模式下替换 Grouped UITableView 的加号/减号按钮?

如何在不使用 Api 的情况下在 uitableview 中进行分页?

UITableView 处于编辑模式时如何隐藏栏按钮项? (迅速)

UITableView编辑模式

如何在编辑模式下将子视图添加到 UITableViewCell 并调整其大小?