Постоянная панель поиска при использовании UISearchController (searchResultsController: myController) - PullRequest
0 голосов
/ 15 декабря 2018

enter image description here

Вопрос

Я хочу сохранить строку поиска Постоянный в панели навигации после подробное представление показано.

Возможно ли это при использовании 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)
}
...