2015-05-05 20 views
5

Quindi, sto attualmente cercando di sostituire il searchDisplayController privato in uno dei miei progetti con UISearchController e sto riscontrando questo problema.UISearchController disattiva VC premendo il pulsante Annulla

Se non vi sono risultati nella ricerca (UITableView è vuoto) l'intero ViewController viene eliminato. Questo non accade quando i risultati della ricerca non sono vuoti. Non voglio chiarire che non sto usando un UITableViewController. Invece ho un VC regolare con un UITableView in esso.

Ecco alcuni del mio codice:

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 
    })() 
    .... 
} 

Ora, se posso aggiungere questa funzione per l'equazione il pulsante Annulla respinge sempre il VC.

func searchBarCancelButtonClicked(searchBar: UISearchBar) { 
    resultSearchController.active = false 
} 

Allora perché fa esattamente l'impostazione del searchController.active = false respingere il VC? È perché sta usando lo stesso UITableView del VC? Credo che il vecchio searchDisplayController mostrerebbe semplicemente un UITableView rispetto a quello utilizzato. Se questo è il caso, c'è un modo per ignorare il respingereVC?

+0

Cosa succede quando non si include l'impostazione 'active' alla linea 'false' e ​​premi il pulsante Annulla? – shim

+0

Quando non è incluso, si limita a chiudere il VC quando non ci sono risultati di ricerca come indica la domanda. Se è incluso, lo fa sempre quando viene premuto il pulsante Annulla. – boidkan

+0

Chiude quando non ci sono risultati di ricerca, o chiude quando non ci sono risultati di ricerca e premi Annulla? – shim

risposta

2

questo è anche successo a me. The Way I risolverlo è di Sostituzione:

resultSearchController.active = false 

con

resultSearchController.searchBar.text = "" 
    resultSearchController.searchBar.resignFirstResponder() 

Spero che questo ti aiuta :-)

+0

Questa soluzione mantiene searchController ancora attivo, il che significa che, se è stato associato SearchBar a tableview con pull-down-to-refresh abilitato, l'indicatore di aggiornamento non sarà visibile; Come soluzione alternativa, rimuovi la barra di ricerca esistente da superview e creane e allegarne una nuova a tableview. – Delorean

Problemi correlati