2012-03-23 8 views
6

È possibile impostare self.navigationItem.title = @"MyTitle"; dopo aver caricato la vista?Impostare il titolo di UINavigationBar

Sto utilizzando una barra di ricerca e nella stessa vista alimento un UITableView utilizzando i risultati della ricerca. Quindi voglio impostare il valore del testo della barra di ricerca come titolo della barra di navigazione, dopo aver caricato i risultati della ricerca.

Sto usando iOS 4.3.

+2

Perché non provi e lo saprai sì sì sì funzionerà ... –

+1

Non lo chiedo a nessuno senza provarlo. Sì, ci ho provato ma non sono riuscito a trovare una soluzione. Ecco perché ho chiesto questo. – chinthakad

+0

Quindi prova 'self.title = @" MyTitle ";' –

risposta

2

Trovato una soluzione. Ho seguito Pedro Valentini's post.

Questo è quello che ho fatto,

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 120, 30)]; 
label.textAlignment = UITextAlignmentCenter; 
[label setFont:[UIFont boldSystemFontOfSize:16.0]]; 
[label setBackgroundColor:[UIColor clearColor]]; 
[label setTextColor:[UIColor whiteColor]]; 
[label setText:text]; 
[self.navigationController.navigationBar.topItem setTitleView:label]; 
[label release]; 
+0

Questa soluzione ignorerà le proprietà di progettazione della barra di navigazione esistente poiché si imposta la propria etichetta. L'impostazione di 'navBar.topItem.title' come indicato da @SamirChen è più semplice e utilizzerà il design già impostato. –

0

Che dovrebbe funzionare se "dentro" a UINavigationController.

+0

Nel mio delegato dell'app seguo, UINavigationController * rootViewNavigationController = [[UINavigationController alloc] initWithRootViewController: self.rootViewController]; rootViewController è quello che cambierò il titolo in modo dinamico. – chinthakad

+0

che dovrebbe funzionare perfettamente bene allora! – Max

1

Sì. È possibile impostare dinamicamente il titolo di navigationItem durante qualsiasi parte del ciclo di vita di un UIViewController. L'operazione set è gestita da un metodo getter che invia un messaggio a UINavigationController per caricare i contenuti della barra di navigazione in modo da riflettere il nuovo titolo.

15

Basta impostare il titolo di UINavigationBar come questo:

navBar.topItem.title = @"sample string"; 
2

Normalmente il titleView sarà un UILabel, in modo da poter prenderlo, cast, e impostare il suo testo.

Per qualche motivo ho avuto problemi con questo in viewDidLoad, aggiungendolo a viewWillAppear sembrava fare il trucco.

((UILabel *)self.navigationController.navigationBar.topItem.titleView).text = @"your title here" 
+0

alcune spiegazioni potrebbero aiutare questa risposta – dove

0
_navBar = [[UINavigationBar alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)]; 
_navBar.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
UINavigationItem *navItem = [UINavigationItem alloc]; 
navItem.title = @"Title"; 

Try This.

0
self.navigationItem.title = @"Terms and Conditions";