9

Sto usando UISearchController per visualizzare una barra di ricerca e risultati all'interno di UITableView. Sono riuscito a configurarlo correttamente, ma quando cerco i risultati e poi seleziono una delle righe nella vista tabella, e spingo un nuovo controller di visualizzazione nello stack di navigazione, mi aspetto che la barra di ricerca non sia più visibile. Tuttavia, quando provo questo, la barra di ricerca del primo controller di vista è visibile nella 2 ° controller della vista:UISearchController non nasconde la vista quando viene premuto

if (self.searchController == nil) { 
    self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; 
    self.searchController.searchResultsUpdater = self; 
    self.searchController.dimsBackgroundDuringPresentation = NO; 
    self.searchController.searchBar.scopeButtonTitles = @[]; 
    self.searchController.searchBar.delegate = self; 

    self.tableView.tableHeaderView = self.searchController.searchBar; 
} 

Una possibilità è quella di chiamare self.searchController setActive:NO] all'interno di didSelectRowAtIndexPath: ma non c'è un modo per farlo senza l'animazione distrazione di abbassare la barra di ricerca ogni volta che vengono selezionati i risultati della ricerca.

Qualcuno ha lo stesso problema? C'è un modo per dire a UISearchController di nascondere la barra di ricerca quando viene spinto? Ha funzionato bene quando stavo usando UISearchDisplayController

+0

Questa soluzione [soluzione] (http://stackoverflow.com/questions/29472011/uisearchcontroller-persisting-after-segue/29624748#29624748) aiuta? –

risposta

31

Mettete questo nella vostra viewDidLoad:

Swift:

self.definesPresentationContext = true 

Objective-C:

self.definesPresentationContext = YES; 

Questo risolto il problema per me.

+4

Che soluzione oscura. Ma abbastanza sicuro, ha funzionato! –

+1

Sì. Non capisco ma ha funzionato anche per me! –

+1

> "