Я реализовал 1UISearchController1 для своего стола, с областями и всем. Однако он не отображается правильно, когда представление загружается изначально.iOS8 UISearchController Covers Up UITableView
Есть четыре разных вещи, которые я вижу в зависимости от моих действий.
Это то, что я вижу, когда открывается представление. Я не ожидал бы появиться в баре объем:
Теперь, если я нажимаю на панели поиска, я вижу это:
Далее, если нажать на кнопку снова кнопку Отмена, я вижу это на табличном:
Наконец, если та р на строку поиска снова, я вижу, что я хотел бы ожидать, когда я постучал в строке поиска в первый раз:
И если я откажусь еще раз, теперь панель поиска отображается правильно на столе вид:
Вот соответствующая часть моей 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'. – Erakk
Спасибо, но это не помогло. Я думаю, что это имеет какое-то отношение к инициализации контроллера поиска в viewDidLoad, но я не знаю, где еще его инициализировать. –
'self.tableView.tableHeaderView = resultSearchController.searchBar' попытается поместить эту строку в' viewWillAppear' или 'layoutSubviews' – Erakk