Вопрос
Я хочу сохранить строку поиска Постоянный в панели навигации после подробное представление показано.
Возможно ли это при использовании UISearchController(searchResultsController: myController)
, если да, то как?
Пример, который вы будете знать
Более того, что-то похожее на поиск музыки Apple работает в iOS.Пользователь вводит поисковый термин, предложения заполняются в табличном представлении, пользователь нажимает поисковое предложение, и табличное представление изменяется на собранное представление (или другое табличное представление) , но панель поиска остается в верхней частипредставление.
Настройка
Я использую UISearchController
с настраиваемым контроллером результатов поиска, который является табличным представлением.В контроллере корневого представления,
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let storyboard = UIStoryboard(name: "Search", bundle: nil)
let searchResultsController = storyboard.instantiateViewController(withIdentifier: "searchResultsController") as! SearchResultsTableViewController
searchResultsController.navController = self.navigationController
let searchController = UISearchController(searchResultsController: searchResultsController )
// Setup the Search Controller
searchController.delegate = self
searchController.searchResultsUpdater = searchResultsController
searchController.obscuresBackgroundDuringPresentation = true
searchController.searchBar.placeholder = "Search for freebies"
navigationItem.searchController = searchController
definesPresentationContext = true
}
Когда нажата подсказка поиска, я помещаю другое представление таблицы (может быть представлением коллекции) в контроллер навигации из метода делегата представления таблицы,
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let storyboard = UIStoryboard(name: "Search", bundle: nil)
let freebieListController = storyboard.instantiateViewController(withIdentifier: "freebieListController") as! FreebieListViewController
freebieListController.navigationItem.title = "Luna"
let navigation = self.navController
navigation?.pushViewController(freebieListController, animated: false)
}