2010-07-28 30 views
5

Eventuali duplicati:
How to add serach bar in navigation bar for iPhoneCome aggiungere la barra di ricerca nella barra di navigazione per iphone?

Questo è il codice per visualizzare la barra di ricerca, ma voglio mettere questo in barra di navigazione

sBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0,10,320,30)]; 

sBar.delegate = self; 

[self.view addSubview:sBar]; 
//[self.navigationItem.rightBarButtonItem addSubview:sBar]; 
//self.navigationItem.rightBarButtonItem=sBar; 

esiste un modo?

+0

Hai già un paio di domande su cui chiedere la stessa cosa. –

risposta

1

È possibile fornire una vista personalizzata per la sezione del titolo di una barra di navigazione. Dai uno sguardo allo UINavigationController e in particolare alla sezione Aggiornamento della barra di navigazione.

Il controller di navigazione aggiorna la centro della barra di navigazione come segue:

Se il nuovo vista del regolatore di livello superiore ha una vista titolo personalizzato, la barra mostra di navigazione che vedono in posto della vista titolo predefinita. Per specificare una vista titolo personalizzata, impostare la proprietà titleView della vista elemento di navigazione del controller .

+0

ho fatto questo self.navigationItem.titleView = sBar; funziona ma la mia ricerca() non funziona ho fatto questo bsBar.delegate = self; ora mi manca qualcos'altro – ram

+0

Su iPad Con questo i risultati vengono mostrati in un popover invece che nell'area di visualizzazione della tabella originale. Qualche soluzione a questo? – Norbert

24

Aggiungere la barra di ricerca come vista titolo alla barra di navigazione. Questo esempio di codice include anche una correzione per il riempimento extra ottenuto aggiungendolo come vista titolo.

UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(-5.0, 0.0, 320.0, 44.0)]; 
searchBar.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
UIView *searchBarView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 310.0, 44.0)]; 
searchBarView.autoresizingMask = 0; 
searchBar.delegate = self; 
[searchBarView addSubview:searchBar]; 
self.navigationItem.titleView = searchBarView; 
+0

ho fatto la stessa cosa ma ho creato il gestore e IBoutlet di serachbar che stava funzionando bene ma che stava scorrendo in modo da usare il tuo codice la mia funzione di serach non funziona ?? come risolvere quello penso che ho bisogno di omettere delgate da Iboutlet cosa suggerisci ?? io sono geetin un waring se uso questo searchBara.delegate = self; rootviewCnt non impalement Protocollo delegato UIseachbar – ram

+0

Ho il problema che i risultati sono mostrati in una vista tabella incorporata in un popover, invece che nel frame della vista tabella originale. Qualche soluzione a questo? – Norbert

+0

Questa sembra una buona risposta. Dove metterei questo codice? Se copio e lo incollo in un metodo chiamato 'addSearchBarToNavigationBar'. Dove chiamerei il metodo? Sto usando un TableViewController – learner

5

è possibile assegnare qualsiasi vista alla proprietà titleView dell'elemento di navigazione. Puoi farlo in questo modo.

self.navigationItem.titleView = searchBar ; 

Questo dovrebbe funzionare o no poi l'aggiunta di barra di ricerca per l'istanza UIView e assegnando questa vista per self.navigationItem.titleView farà.

Problemi correlati