J'ai ajouté une UIButton
dans la section d'en-tête de la UITableView
via le générateur d'interface et souhaite supprimer l'accès au bouton dans certains cas. J'ai essayé d'utiliser la propriété .hidden = TRUE
, mais elle masque simplement le bouton de la vue, laissant un espace blanc derrière. Comment est-ce que je supprime par programme l'en-tête de UITableView
et que le contenu de la table est automatiquement redimensionné pour remplir la zone d'en-tête supprimée?
Si vous souhaitez supprimer la vue en-tête de la table, définissez simplement la propriété myTable.tableHeaderView sur nil. Si ce que vous avez est en fait un en-tête de section, vous devez renvoyer nil à partir de la méthode viewForHeaderInSection et appeler [myTableView reloadData].
Vous pouvez aussi faire:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 0.0;
}
Cela semble fonctionner pour mon en-tête de section (unique) et évite le besoin de reloadData
.
Notez que:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
est toujours appelé, mais sa valeur de retour semble être ignorée.
J'ai créé une propriété booléenne appelée removeHeader
et ensuite, chaque fois que je veux supprimer mon en-tête, j'appelle:
func removeSectionHeader() {
removeHeader = true
self.tableView.reloadData()
}
Ensuite, lorsque mon tableView rechargera, elle appellera cette méthode de délégation tableView:
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
if removeHeader {
return 0.0
} else {
let height = self.tableView.sectionHeaderHeight
return height
}
}