J'ai donc un contrôleur de recherche sur mon élément de navigation.Contrôleur de recherche dans le comportement de confusion de l'élément de navigation
// View controller
var searchController = UISearchController(searchResultsController: nil)
// viewWillAppear()
override func viewWillAppear(_ animated: Bool) {
tableView.reloadData()
if #available(iOS 11.0, *) {
navigationController?.navigationBar.prefersLargeTitles = true
}
if employeeSearchList.count > 10 {
if #available(iOS 11.0, *) {
navigationItem.searchController = searchController
} else {
tableView.tableHeaderView = searchController.searchBar
}
} else {
if #available(iOS 11.0, *) {
let search = UISearchController(searchResultsController: nil)
navigationItem.searchController = search
navigationItem.searchController = nil
} else {
tableView.tableHeaderView = nil
}
}
UIView.animate(withDuration: 0.50, animations: {
self.view.layoutIfNeeded()
})
}
Ce morceau de code fonctionne parfaitement. Si le nombre est inférieur à 10, searchController est défini, sinon il est défini sur searchController vide, puis défini sur nil, de sorte qu'il disparaît de l'interface utilisateur.
// viewDidLoad()
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.tintColor = tintColor
// Table view editing delegate -> delete operation
if employeeSearchList.count < 10 {
if #available(iOS 11.0, *) {
let search = UISearchController(searchResultsController: nil)
navigationItem.searchController = search
navigationItem.searchController = nil
} else {
tableView.tableHeaderView = nil
}
UIView.animate(withDuration: 0.50, animations: {
tableView.reloadData()
self.view.layoutIfNeeded()
})
}
Maintenant, mon problème est, quand je présente un viewController au-dessus de celui-ci et ensuite rejeter, le viewWillAppear exécute bien, mais le SearchController ne se présente pas. Mais si je pousse le viewController et que je reviens, ça se voit.
Quelle est la principale différence entre les deux opérations? (push/pop & present/dismiss)
J'espérais quelque chose comme - quelle fonction supplémentaire, délégué, etc serait appelé dans chaque cas. –