3

我的 iPhone 应用程序的UITableView一部分以分组格式显示三个静态部分。然而,在某些情况下(基于用户输入),当视图控制器显示表格时,这些部分中的最后一个不出现是最合适的。

viewDidLoad控制器的方法中,我添加了以下有条件执行的代码行:

if ([self.formula containsElementWithoutStableIsotopes]) {
    NSLog(@"Deleting section 2 ...");
    NSUInteger sectionToDelete = 2;
    [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:sectionToDelete] 
                  withRowAnimation:UITableViewRowAnimationAutomatic];
}

“删除第 2 节 ...”记录到控制台,所以我知道这段代码正在执行,但表格似乎没有受到影响:所有三个部分都照常显示。

在理想情况下,我希望在表格视图显示之前删除第 2 部分,但我可以忍受它在出现时被删除。但是,如果我将上面的代码放在viewDidAppear方法中,程序会引发 an,NSInternalInconsistencyException因为删除前后的节数不匹配。

我真的很感谢你在这个话题上的帮助。

4

2 回答 2

5

请使用以下代码:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    sectionToDelete = 1;
    [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:sectionToDelete] withRowAnimation:UITableViewRowAnimationFade];
    [self.tableView reloadData];

}



- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 3 - numberOfSectionsToDelete;
}
于 2012-07-07T15:59:49.603 回答
0

最好的办法是——

[myTableView beginUpdates];
[myArray removeObjectAtIndex:myIndexPath.section];
[myTableView deleteSections:[NSIndexSet indexSetWithIndex:myIndexPath.section] 
           withRowAnimation:UITableViewRowAnimationRight];
[myTableView endUpdates];
于 2014-09-21T04:48:48.130 回答