UISearchController не закрывается должным образом при выходе за пределы области действия

Я встраиваю функции поиска в свое приложение, которое состоит в основном из UITableViews. Я успешно добавил панель поиска и могу правильно искать элементы, но когда я устанавливаю controller.dimsBackgroundDuringPresentation = false, все становится странно. Проблема в том, что я хочу, чтобы это логическое значение было ложным, поскольку пользователи должны иметь возможность прокручивать результаты и выбирать результат, чтобы увидеть более подробную информацию.

Поведение, которое я вижу, следующее: панель поиска никогда не закрывается, если вы не нажмете кнопку Cancel, что означает, что когда я выбираю ячейку в своем табличном представлении, чтобы показать сведения об этой ячейке, панель поиска переносится в это представление как таковое: EventDetailWithSearchBar

Я инициализирую свой контроллер поиска следующим образом:

 self.searchController = ({
        let controller = UISearchController(searchResultsController: nil)
        controller.searchResultsUpdater = self
        controller.dimsBackgroundDuringPresentation = false
        controller.searchBar.sizeToFit()
        controller.hidesNavigationBarDuringPresentation = false
        controller.searchBar.searchBarStyle = .Minimal
        controller.delegate = self
        
        self.tableView?.tableHeaderView = controller.searchBar
        return controller;
    })()

и хотя сам поиск работает (вызывается updateSearchResultsForSearchController, я применяю свой поиск и возвращаю массив и т. д.), я никак не могу использовать поиск, так как, если я выбираю ячейку во время поиска, происходит приведенная выше картина, но если я нажму отмену, то мой поиск будет очищен. Любая помощь будет оценена по достоинству.


person BHendricks    schedule 14.05.2015    source источник


Ответы (1)


вы должны добавить следующую строку в viewDidLoad()

definesPresentationContext = true

Подробнее см. в документации: определяетPresentationContext

person Praveen Gowda I V    schedule 15.05.2015