删除节中的所有表行

对于我的iPad项目,我需要能够重新加载表行。 这是它应该如何工作,取决于从弹出视图中选择的一些“id”,我需要能够重新加载表行,表行是动态的并且在其中有一个UITextField。我尝试使用[self.tableView reload]但由于某种原因它没有正确更新行。像之前的“id”所拥有的UITextField占位符之类的东西不会改变。我想到的是删除该特定部分中的所有单元格并使用新的“id”重新加载表。当我这样做时,我得到了这个例外: *由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无效更新:第0节中的行数无效。更新后的现有节中包含的行数(3)必须等于包含的行数更新前的那一部分(3),加上或减去从该部分插入或删除的行数(插入0,删除3)。 项目代码:
- (void)selectedArchiefID:(NSString *) value {
   [self.popOverController dismissPopoverAnimated:YES];

   // collects all available document indexfields
   int rowCount = [indexDefinities count];
   NSMutableArray *indexPaths = [[NSMutableArray alloc] init];

   for (int curIndex=0; curIndex < rowCount; curIndex++) {
       [indexPaths addObject:[NSIndexPath indexPathForRow:curIndex inSection:0]];
   }

   // deletes rows
   if ([indexPaths count] > 0) {
      [self.tableView beginUpdates];
      [self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone];
      //[self.tableView deleteSections:0 withRowAnimation:UITableViewRowAnimationNone];
        [self.tableView endUpdates]; //crashes here
   }

   [self.tableView reloadData];
}
知道我做错了什么吗?     
已邀请:
看起来你忘了更改tableview数据源的数据。 您不能只是更改tableview布局。 如果要删除节,则必须先从数据源中删除此节。 您可以通过删除NSMutableArray中的部分(这是您的数据源)以简单的方式执行此操作。 或者你可以编写一个大的if if else怪物,它可以计算出在
numberOfSectionsInTableView:
tableView:numberOfRowsInSection:
中返回多少部分(和行)。 无论您如何操作,但在更新tableview之前必须删除数据。 还有一件事,在一种方法中同时使用
[self.tableView beginUpdates]; /*...*/ [self.tableView endUpdates];
[self.tableView reloadData];
通常是无用的。后者会杀死你从第一个获得的动画效果。     

要回复问题请先登录注册