Я запрограммировал приложение для ноутбука. Я сохраняю весь объект в массиве и в основных данных. Теперь я реализовал UISearchBarController. Результаты SearchBar сохраняются в другом массиве filterarray. Если я сейчас кликнул на один из результатов, он изменится на DetailView объекта с щелчком. Если я сейчас отредактирую имя заметки и сохраню, я вернусь к предыдущему виду, и он изменит его в CoreData. Когда появится представление, панель поиска по-прежнему активна, и табличное представление будет создано с моим фильтром и измененным объектом I, имеет старое имя. Но когда я закрываю панель поиска, имя изменяется. Можно ли вручную закрыть панель поиска, когда я вернусь к главному виду?Обновить таблицуView после изменения объекта | UISeachBar
ответ
Попробуйте этот:
override func viewDidAppear(animated: Bool) {
self.searchDisplayController?.active = false
}
Вы должны отключить поиск контроллер дисплея, когда представление исчезает (или появляется). Я не знаю название метода наизусть, но должно быть что-то вроде .enabled
или .active
или что-то подобное.
Это, как говорится, я бы сделал это в viewDidDisappear
, так что это делается, когда вы покидаете страницу (и готовы к возврату), и у вас нет вспышки, когда вы возвращаетесь к ней (что вы если вы положите его в метод viewDidAppear
)
UISearchBarController
унаследовал от UIViewController, что означает, что вы можете представить и отклонить его по своему желанию с вашего основного ViewController, используя эти 2 метода.
let searchController = UISearchController() // example
self.presentViewController(searchController, animated: true, completion: nil) // your main ViewController will present the SearchBarViewController
searchController.dismissViewControllerAnimated(true, completion: nil) // your UISearchController() will dismiss itself
Если вы хотите сохранить UISearchController
вокруг и скрыть только UISearchBar
, который наследуется от UIView, так у вас есть .hidden свойство можно использовать: searchController.searchBar.hidden = true
также, как я понял из вашего вопроса, ваш вопрос заключается в том, что searchBar по-прежнему активен, показывая предыдущие результаты поиска, и вы можете заставить его стать неактивным, изменив следующее свойство: searchController.active = false
, отклонив интерфейс поиска, но сохраняя UISearchController
и его UISearchBar
, чтобы пользователь мог использовать его снова, если они захотят нажать поле поиска.
Не могли бы вы объяснить, как этот код отвечает на вопрос? – rfornal
@rfornal - это довольно простой способ и установить searchDisplayController как неактивный, тем самым скрывая его от представления. – faviomob