我的部分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因为删除前后的部分数量不匹配.
我真的很感谢你对这个主题的帮助.
请使用以下代码:
- (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)
| 归档时间: |
|
| 查看次数: |
2493 次 |
| 最近记录: |