代码之家  ›  专栏  ›  技术社区  ›  David.Chu.ca

是否向uitableview添加行以添加新项?

  •  1
  • David.Chu.ca  · 技术社区  · 16 年前

    为了给用户提供向“我的表”视图添加新项目的界面,我想在视图处于编辑模式(视图的导航栏右侧有一个“编辑”按钮)时,在表中的指定位置(例如最后一行)添加一个新行。这一新行的左侧将有一个“添加”按钮指示器,右侧将有一个“披露附件”箭头。当视图未处于编辑模式时,不应显示此添加行。

    我不确定是否应该覆盖:

    - (void)setEditing:(BOOL)editing animated:(BOOL)animated{...}
    

    在这里我调用uitableview的方法:

    insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:
     (UITableViewRowAnimation)animation
    

    要插入新行吗?

    我的理解是,这个调用可能会在表视图中添加一个新行。表视图的数据源来自coredata存储。不确定这是否会导致数据存储区和表视图中的数据数量不一致?如果可以,并且必须在表视图中管理行,则如何向新行添加左添加指示符和左显示箭头?

    另一个问题是,如果我可以将新行作为“添加行”插入,那么当表视图不处于编辑模式时,是否应该将其删除?

    只是想知道我是否在正确的轨道上。

    1 回复  |  直到 13 年前
        1
  •  1
  •   drewish    13 年前

    – insertRowsAtIndexPaths:withRowAnimation: 将向TableView添加一行。在删除或重新加载数据之前,该行将一直存在于TableView中。如果退出编辑模式,则该行的外观将使用以下方法发送到datasource对象:

    - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
    

    当退出编辑模式时,将触发datasource对象,使您有机会将事情恢复到一致状态。在超级调用之前,过分依赖setediting、插入和删除行可能比编写committedingstyle数据源方法的接口更容易——这有点奇怪。