Я работаю над универсальным приложением, использующим раскадровки, и я добавил UISearchBar
и UISearchDisplayController
к одному из моих табличных представлений.Я все это подключил, и могу хорошо искать.Проблема в том, что я помещаю новый контроллер представления в стек навигации.На iPhone это нормально, но на iPad это приводит к смещению контроллера толкания под панелью навигации (мне пришлось вручную заставить панель навигации появляться снова, чтобы вы могли вернуться).
Затем, когда вы вернетесь к исходному табличному представлению, где выполнялся поиск, поиск все еще активен, но UISearchBar
теперь скрыт за панелью навигации, что означает, что нет способа отменить его без удаления запроса.Это также означает, что его больше нельзя использовать, поскольку вы не можете вернуться к нему.
Вероятно, лучше всего это проиллюстрировать с помощью некоторых снимков экрана.
Вот как это выглядит при первом открытииtableview:
Тогда поиск будет нормальным:
Нажав на следующий экран, мы увидимпроблема:
И затем вернуться на исходный экран, все еще выполняя поиск, но без окна поиска:
ЗатемЕсли я удаляю все из окна поиска и избавляюсь от наложения, я могу видеть окно поиска, когда прокручиваю представление таблицы вверх, но никогда не могу добраться до него.Я не могу получить надежный снимок экрана с этим.
Я везде искал решение, но не смог найти его.Я пытался вызвать [self setNeedsDisplay]
и [self setNeedsLayout]
в методе viewDidAppear
, но это, похоже, не дает никакого эффекта.Похоже, что он исправляется, если я изменяю ориентацию устройства, и я пытался воспроизвести то, что он будет делать в этой ситуации, вызывая эти методы.
Структура раскадровки iPad: SplitViewController
-> Навигационный контроллер -> UITabBarController
-> UITableViewController
(содержит UISearchBar
etc.f) -> UITableViewController