您还需要覆盖 TableView: numberOfRowsInSection:并返回该部分中的行数。您必须在这里做一些奇怪的事情,以便如果您的表是一个分组样式,圆角出现在正确的单元格上。在我的静态表格中,有一组完整的单元格用于部分,所以有第一个包含该选项的单元格,然后是 ON 状态选项的1个单元格和 OFF 状态选项的2个单元格,总共4个单元格。当选项为 ON 时,我必须返回4,这包括隐藏选项,以便最后显示的选项有一个圆角框。当选项关闭时,最后两个选项不会显示,所以我返回2。这一切感觉都很笨重。对不起,如果这不是很清楚,它很难描述。为了说明设置,下面是 IB 中表格部分的构造:
- (void)viewDidLoad
{
hiddenSections = [NSMutableArray new];
if(some piece of data is empty){
// Add index of section that should be hidden
[self.hiddenSections addObject:[NSNumber numberWithInt:1]];
}
... add as many sections to the array as needed
[self.tableView reloadData];
}
- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == 1 && indexPath.row == 1) { // This is the cell to hide - change as you need
// Show or hide cell
if (self.mySwitch.on) {
return 44; // Show the cell - adjust the height as you need
} else {
return 0; // Hide the cell
}
}
return 44;
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath == indexPathOfHiddenCell {
if cellIsHidden {
return 0
}
}
// Calling super will use the height set in your storyboard, avoiding hardcoded values
return super.tableView(tableView, heightForRowAt: indexPath)
}