Исчезающий UISearchController в TableViewController, который находится в UINavigationController

Я создал UITableView Controller с UISearchBar в качестве заголовка таблицы.

Затем я включил этот контроллер просмотра в UINavigationController, как контроллер корневого представления.

Теперь, когда я нажимаю на панель поиска, SearchBar, кажется, исчезает и отображает белый экран. Появится клавиатура, но нет панели поиска. Просмотр таблицы может прокручиваться, но панель поиска просто исчезла.

Когда я реализую этот UITableViewController без контроллера навигации, он работает отлично. Но что-то о навигационном контроллере все сводится.

У меня была такая же проблема, которая иногда случалась, особенно с табличным представлением небольшого количества строк (менее 50). Похоже, что searchBar удаляется из иерархии представлений, именно из представления контейнера, являющегося дочерним элементом UISearchControllerView.

Я нашел обходное решение, чтобы вручную добавить панель поиска в качестве поднабора дочернего элемента контейнера UISearchControllerView. Это реализовано в функции делегата (из UISearchControllerDelegate) didPresentSearchController:

func didPresentSearchController(searchController: UISearchController) { if searchController.searchBar.superview == nil { for searchCtrlChildView in searchController.view.subviews { if searchCtrlChildView.frame.origin == CGPoint(x: 0, y: 0) { //Discriminate if by chance there was more than one subview searchCtrlChildView.addSubview(searchController.searchBar) break } } } } 

Я также подал на него радар для Apple, поскольку он не исправлен в iOS 8.4

Проверьте, как у меня был мой поискBar в viewDidLoad

У меня тоже есть встроенный в NavigationController viewController

Мой код (надеюсь, это поможет):

 class myTableViewController: UITableViewController,UISearchResultsUpdating,UISearchControllerDelegate,UISearchBarDelegate override func viewDidLoad() { super.viewDidLoad() self.resultSearchController = ({ let controller = UISearchController(searchResultsController: nil) controller.searchResultsUpdater = self controller.dimsBackgroundDuringPresentation = false controller.searchBar.sizeToFit() self.tableView.tableHeaderView = controller.searchBar return controller })() 
  • Как сохранить состояние UISearchDisplayController?
  • Как установить цвет панели UISearch
  • Показать предварительные результаты поиска?
  • UISearchBar вводит 2 символа, прежде чем кнопка поиска активна на UIKeyboard
  • Изменение поля поля поиска UISearchBar
  • Невозможно преобразовать значение типа «», чтобы ввести «Запись» в принуждение
  • Добавить UISearchBar в заголовке UICollectionViewController
  • Скрыть кнопку отмены UISearchBar
  • UISearchBar в UINavigatioBar titleView с SearchDisplayController
  • Случайный UISearchDisplayController Crash (iOS 7)
  • Невозможно установить searchBar как firstResponder
  • Interesting Posts

    iOS: удаление файла в .DocumentDirectory с помощью Swift2

    AVAudio Recorder не записывается после фона

    UIImageView не всегда отображает изображение шаблона

    Дни между двумя NSDates в календарном году быстро

    Пользовательский титульный заголовок кнопки и сохранение жестов салфетки назад

    косвенный распознаватель жестов – какой объект был использован?

    Как исправить ошибку ibtool с кодом выхода 255

    Анимировать цвет фона UIButton от WhiteColor до RedColor

    Нарисуйте линию, которая может растягиваться, как редактор помощника Xcode в Swift

    Как оживить заголовок раздела коллекции в приложении tvOS?

    iOS Swift: индексы отслеживания и хранения всех повторяющихся значений в массиве?

    Делегаты SimplePing Apple не стреляют

    Сбой Safari при съемке в iPhone 4S

    Изменение положения курсора UITextField при изменении ориентации

    Как уменьшить масштаб UIImage и сделать его хрустящим / острым одновременно, а не размытым?

    Давайте будем гением компьютера.