Programmatically remove the header of UITableView and automatically resizes the content to fill in the removed area
I have added a UIButton
in the header section of the UITableView
via the interface builder and would like to remove the access to the button in certain cases. I have tried to use the .hidden = TRUE
property but it just hides the button from the view, leaving a white space behind. How do I programmatically remove the header of UITableView
and hav开发者_StackOverflow社区e the table's content automatically resizes to fill in the removed header area?
If you want to remove the table's header view, just set the myTable.tableHeaderView property to nil. If what you have is actually a section header, then you need to return nil from the viewForHeaderInSection method and call [myTableView reloadData]
You could also do:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 0.0;
}
This seems to work for my (single) section header and avoids the need for reloadData
.
Note that:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
is still called, but its return value seems to be ignored.
I created a boolean property called removeHeader
and then when ever I want to remove my header I call:
func removeSectionHeader() {
removeHeader = true
self.tableView.reloadData()
}
Then when my tableView reloads it will call this tableView delegate method:
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
if removeHeader {
return 0.0
} else {
let height = self.tableView.sectionHeaderHeight
return height
}
}
Check if your tableView has a grouped style, in that case a white space appears at the top of the table. Change the style to plain and that blank space will be removed.
精彩评论