Я реализовал 1UISearchController1 для своего табличного представления с областями и всем остальным. Однако он не отображается правильно при начальной загрузке представления.
В зависимости от моих действий я вижу четыре разные вещи.
Это то, что я вижу, когда вид впервые появляется. Я бы не ожидал, что появится полоса обзора:
Теперь, если я нажму на строку поиска, я вижу это:
Затем, если я снова нажму кнопку «Отмена», я увижу это в представлении таблицы:
Наконец, если я снова нажму на строку поиска, я увижу то, что ожидал, когда нажал на строку поиска в первый раз:
И если я отменю еще раз, теперь панель поиска правильно отображается в виде таблицы:
Вот соответствующая часть моего TableViewController.
class BaseWineTableViewController: UITableViewController, UITableViewDelegate, UINavigationControllerDelegate, UITableViewDataSource, UISearchResultsUpdating, UISearchBarDelegate, UISearchControllerDelegate {
var resultSearchController = UISearchController()
func ConfigureSearchController() {
self.resultSearchController = UISearchController(searchResultsController: nil)
self.resultSearchController.searchResultsUpdater = self
self.resultSearchController.searchBar.delegate = self
self.resultSearchController.delegate = self
self.resultSearchController.searchBar.showsCancelButton = true
self.resultSearchController.searchBar.autocapitalizationType = .None
self.resultSearchController.searchBar.showsScopeBar = true
self.resultSearchController.searchBar.scopeButtonTitles = ["All", CELLAR_STATUSES.Cellared, CELLAR_STATUSES.Wishlist, CELLAR_STATUSES.Finished]
self.resultSearchController.definesPresentationContext = true
self.resultSearchController.dimsBackgroundDuringPresentation = false
self.tableView.tableHeaderView = resultSearchController.searchBar
}
override func viewDidLoad() {
super.viewDidLoad()
ConfigureSearchController()
}
self.resultSearchController.searchBar
внутри методаviewWillAppear:
вместоviewDidLoad
. мое объяснение состоит в том, что они также имеют дело с макетом, с которым не стоит возиться наviewDidLoad
. - person Erakk   schedule 01.06.2015self.tableView.tableHeaderView = resultSearchController.searchBar
попробуйте поместить эту строку наviewWillAppear
илиlayoutSubviews
- person Erakk   schedule 02.06.2015