Как удалить панель поиска iOS 11 из поля зрения и обновить пользовательский интерфейс

В xcode 9, когда я открываю панель поиска, она автоматически перемещает остальную часть пользовательского интерфейса вниз. Когда я пытаюсь удалить панель поиска из поля зрения, я получаю черное пространство вместо исправления пользовательского интерфейса. Строка, которую я использую: self.navigationItem.searchController = nil. Я пробовал много вещей, но я не знаю, как исправить пользовательский интерфейс после удаления панели поиска. Только когда я перехожу к другому контроллеру представления и обратно, пользовательский интерфейс снова становится правильным без панели поиска. Что мне здесь не хватает?

код:

@IBAction func searchIconPressed(_ sender: UIBarButtonItem) {

    //ios 11
    if #available(iOS 11.0, *) {
         if self.navigationItem.searchController == nil {
            self.navigationItem.searchController = self.searchController
            self.searchController.isActive = true

        }
        else {
            self.navigationItem.searchController?.isActive = false
            self.navigationItem.searchController = nil
        }
    }
    //when ios 9-10
    else {
        if self.navigationItem.titleView == nil {
            self.navigationItem.titleView = self.searchController.searchBar
            self.searchController.isActive = true
        }
        else {
            self.navigationItem.titleView = nil
        }
    }
}

}


person Frank van der Meulen    schedule 01.10.2017    source источник


Ответы (2)


Ответ для удаления панели поиска из поля зрения и повторного перемещения пользовательского интерфейса вверх:

self.navigationItem.searchController?.isActive = false
let search = UISearchController(searchResultsController: nil)
self.navigationItem.searchController = search
self.navigationItem.searchController = nil
person Frank van der Meulen    schedule 03.10.2017

А вот для цели C

[self.navigationItem.searchController setActive:NO];
UISearchController *nilSearch = [[UISearchController alloc] initWithSearchResultsController:nil];
self.navigationItem.searchController = nilSearch;
self.navigationItem.searchController = nil;
person Herbert Bay    schedule 02.11.2017