5

In genere utilizzo [self.tableView setContentOffset:CGPointMake(0,40)]; per nascondere UISearchBar (che ho impostato come intestazione di tableView) sotto la barra di navigazione. Tutto funziona bene in viewDidLoad: la barra di ricerca si trova sotto la barra di navigazione quando viene caricata la vista. Poi ho messo la stessa riga di codicenasconde UISearchBar sotto UINavigationBar dopo cancelButton è stato chiamato

[self.tableView setContentOffset:CGPointMake(0,40)] 

in

- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller 

ma fa niente: la barra di ricerca rimangono visibili quando pulsante Annulla viene cliccato. Cosa c'è che non va?

risposta

1

Il metodo seguente viene chiamato dal thread principale?

- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller 

È possibile controllare in questo modo:

if ([NSThread isMainThread]) { 
    NSLog(@"Yes it is the main thread."); 
} 

In caso contrario, tutte le modifiche vista non registrerà sullo schermo. Se è necessario modificare la vista da un thread separato è possibile utilizzare questo:

[self performSelectorOnMainThread:@selector(XXX) withObject:nil waitUntilDone:NO]; 

non sono sicuro se questo è il problema, ma è dove mi piacerebbe iniziare a guardare.

4

Il seguente metodo dovrebbe farlo:

-(void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller{ 
    [self.tableView setContentOffset:CGPointMake(0,40)];  
} 
+0

Assicurati di aggiungere UISearchBar alla Tableview. allora funzionerà solo il concetto contentOffset. –

Problemi correlati