Tak, obecnie próbuję zastąpić zdeplikowany searchDisplayController w jednym z moich projektów za pomocą UISearchController i jestem uruchomiony w ten problem.UISearchController odrzuca VC po naciśnięciu przycisku anulowania
Jeśli nie ma wyników w wyszukiwaniu (UITableView jest pusty), cały ViewController jest odrzucany. Nie dzieje się tak, gdy wyniki wyszukiwania nie są puste. Nie chcę wyjaśnić, że nie używam kontrolera UITableViewController. Zamiast tego mam regularny VC z UITableView w nim.
Oto niektóre z moich kodu:
var resultSearchController = UISearchController()
override func viewDidLoad() {
super.viewDidLoad()
self.resultSearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
controller.delegate = self
controller.searchBar.delegate = self
self.studentTable.tableHeaderView = controller.searchBar
return controller
})()
....
}
Teraz, jeśli dodać tę funkcję do równania przycisk anulować zawsze Oddala VC.
func searchBarCancelButtonClicked(searchBar: UISearchBar) {
resultSearchController.active = false
}
Więc dlaczego dokładnie ma ustawienie searchController.active = false
odrzucenie VC? Czy to dlatego, że używa tego samego UITableView jako VC? Wierzę, że stary searchDisplayController wyświetlałby tylko UITableView nad tym, który jest używany. Jeśli tak, to czy istnieje sposób na zastąpienie metody dismissVC?
Co się dzieje, gdy nie zawierają linię do ustawień 'active' 'false' i naciśniesz przycisk anulowania? – shim
Gdy nie jest dołączony, powoduje odrzucenie VC tylko wtedy, gdy nie ma wyników wyszukiwania. Jeśli jest włączone, zawsze robi to po naciśnięciu przycisku anulowania. – boidkan
Odrzuca, gdy nie ma wyników wyszukiwania, lub odrzuca, gdy nie ma wyników wyszukiwania, a użytkownik naciśnie przycisk anulowania? – shim