J'ai un UITableView dont les données ont des sections. J'afficher une vue en superposition sur le dessus de tableView qui obscurcit quand la recherche:En-têtes de section UITableView dessin au-dessus de la sous-vue avant
- (UIView *)blackOverlay {
if (!blackOverlay) {
blackOverlay = [[UIView alloc] initWithFrame:[self overlayFrame]];
blackOverlay.alpha = 0.75;
blackOverlay.backgroundColor = UIColor.blackColor;
[tableView insertSubview:blackOverlay aboveSubview:self.parentViewController.view];
}
return blackOverlay;
}
Cela fonctionne parfaitement aussi longtemps que tableView ne contient pas de sections. Lorsque tableView contient des sections et les mises à jour de tableView (par exemple, lorsque la vue réapparaît après avoir ouvert une vue hors de la pile du contrôleur de navigation), les en-têtes de section sont rendus au-dessus de blackOverlay. Cela laisse tableView estompé sauf pour les en-têtes de section. J'ai essayé d'appeler [tableView bringSubviewToFront:self.blackOverlay]
depuis viewWillAppear:
, mais j'ai le même comportement. Ma méthode de travail actuelle retourne zéro pour les en-têtes de section tableView alors que la superposition est présente, mais cela laisse des espaces blancs dans la vue tabulée superposée où les en-têtes de section étaient précédemment.
Comment puis-je m'assurer que les en-têtes de section tableView ne sont jamais dessinés au-dessus de blackOverlay? Ou, est-il possible de créer une vue devant tableView à partir d'une sous-classe UITableViewController qui n'est pas une sous-vue de tableView?
J'aurais dû préciser que blackOverlay est en fait une propriété en lecture seule chargée paresseusement, donc l'objet gère réellement sa mémoire. Merci de m'avoir référé à UISearchDisplayController. Je n'étais pas au courant de son existence et en effet il semble que je réinvente la roue! – hadronzoo
FYI, le UISearchDisplayController dessine directement sur la tableView aussi si un TableViewController est donné comme contenuController. – hadronzoo