У меня есть UITableView, чьи данные имеют разделы. Я отобразить вид наложения поверх Tableview, что затемняет его при поиске:Заголовки заголовка UITableView над передним подвью
- (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;
}
Это прекрасно работает, пока Tableview не содержит разделов. Когда tableView содержит разделы и обновления tableView (например, когда представление появляется после появления представления из стека контроллера навигации), заголовки разделов отображаются выше blackOverlay. Это приведет к тому, что tableView затухает, за исключением заголовков разделов. Я пробовал звонить [tableView bringSubviewToFront:self.blackOverlay]
с viewWillAppear:
, но я получаю то же поведение.
В настоящее время мой рабочий стол возвращает нуль для заголовков заголовков tableView, в то время как наложение присутствует, но это оставляет пробелы в наложенном столе, где ранее были заголовки разделов.
Как я могу застраховать, чтобы заголовки разделов таблицы никогда не рисовались над blackOverlay? Или, возможно ли создать представление перед табличным представлением из подкласса UITableViewController, не являющегося подзаданием tableView?
Я должен был указать, что blackOverlay на самом деле является ленивым загружаемым свойством только для чтения, поэтому объект фактически управляет своей памятью. Спасибо, что обратились ко мне в UISearchDisplayController. Я не знал о его существовании, и действительно кажется, что я изобретаю колесо! – hadronzoo
FYI, UISearchDisplayController также рисует непосредственно в tableView, если задан TableViewController как его contentController. – hadronzoo