2016-08-29 3 views
1

У меня проблема с UISearchController в сочетании с UITabBarController. У меня есть 3 вкладки. На каждой вкладке у меня есть UITableViewController с панелью поиска из UISearchController, установленной как вид заголовка таблицы, следующим образом.UISearchController делает содержимое UITableView черным

searchController = UISearchController(searchResultsController: nil) 
searchController.searchResultsUpdater = self 
searchController.dimsBackgroundDuringPresentation = false 
searchController.hidesNavigationBarDuringPresentation = true 
tableView.tableHeaderView = searchController.searchBar 
tableView.contentOffset = CGPointMake(0, CGRectGetHeight(searchController.searchBar.frame)) 

Если я начинаю поиск и перейти на вкладку другой без отмены поиска, а затем вернуться на предыдущую вкладку, содержание UITableView становится черным. Я прочитал несколько сообщений, таких как UISearchController makes the controller black или UISearchController causes black screen Swift 2.0. Но эти решения не работают для меня. Если я устанавливаю

definesPresentationContext = true 

тогда проблема сначала возникает. Если я опускаю эту строку, содержимое табличного представления не будет черным, но панель поиска будет активирована в состоянии поиска на следующей вкладке. Я также попытался установить searchResultsController на другой UITableViewController, но он также не решает проблему.

+0

Вы пробовали программно отменить поиск, когда пользователь перешел на другую вкладку? – Losiowaty

ответ

0

я тоже сталкивался с такой же проблемой, фиксированный, просто добавив следующую строку в viewDidDisappear

self.searchController.active = false 

Как правило, вы получите значение этого свойства для определения того, будут показаны результаты поиска. Однако вы можете установить для этого свойства значение true, чтобы заставить интерфейс поиска отображаться, даже если пользователь не нажал в поле поиска.

Значение по умолчанию этого свойства равно false.

  • Из приведенного выше описания ясно говорит, что значение по умолчанию false если пользователь взаимодействует с searchController он переключается в действительности.
  • В нашем случае проблема возникает, только если мы переключаем вкладку, когда UISearchController является активным. Поэтому нам нужно просто деактивировать программно, переключаясь на другой VC.
+0

Я использую это решение как обходное решение. Но у него есть два недостатка. Во-первых, если пользователь нажимает на ячейку и затем возвращается назад, результаты поиска сбрасываются. Во-вторых, длительность анимации деактивации панели поиска отличается от временных вкладок. Поэтому, если вкладка переключена, панель поиска все еще видна на мгновение. – nickoff

+0

, если у вас нет проблем с 'UISearchBar' для этого. Это не вызовет таких проблем. – Gokul

Смежные вопросы