删除静态单元格的UITableView部分的最佳方法是什么?

Nat*_*nes 3 uitableview ios5

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

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

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

"删除第2部分..."会记录到控制台,因此我知道此代码正在执行,但表格似乎不受影响:所有三个部分都照常显示.

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

我真的很感谢你对这个主题的帮助.

Mat*_*der 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;
}
Run Code Online (Sandbox Code Playgroud)