2013-04-05 4 views
5

Ho creato un titolo per la barra di navigazione nel mio progetto storyboard, ma quando mi sono spostato sul prossimo viewcontroller il pulsante indietro mostra lo stesso nome della mia precedente barra di navigazione (barra di navigazione principale). Posso impostare un titolo separato e nomi di pulsanti indietro?Il titolo del pulsante di navigazione e il nome del pulsante Indietro sono gli stessi?

Ho provato a seguire il codice ma non funziona? perché?

[email protected]"Recent Books"; 
[email protected]"Back"; 
+0

Si prega di guardare la mia risposta http://stackoverflow.com/questions/9871578/how-to-change-the-uinavigationcontroller-back- nome-pulsante/9871775 # 9871775 – Tendulkar

+0

Questa risposta non funziona per me – Naveen

risposta

19

Secondo UINavigationItem Class Reference

"Quando questa voce di navigazione si trova subito sotto la prima voce nella pila , il controller di navigazione deriva il pulsante indietro per la barra navigazione da questa voce di navigazione. [ ...] Se si desidera specificare un'immagine personalizzata o titolo per il pulsante Indietro, è possibile assegnare una voce di pulsante barra personalizzata (con il titolo o l'immagine personalizzata) a questa proprietà invece ".

Quindi provare questo nel tuo primo VC, da dove si stanno spingendo altro VC

[email protected]"Recent Books"; 
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] 
            initWithTitle:@"Back" 
            style:UIBarButtonItemStylePlain 
            target:nil 
            action:nil]; 
self.navigationItem.backBarButtonItem=backButton; 
+0

@Bhargavi ... Errore non tecnico..ora ok – Naveen

+0

Ho due BarButton personalizzati sulla mia prima vista, a sinistra su "Informazioni" e il diritto a "Impostazioni". Eppure, ho dovuto impostare un nome per BackButton nella prima vista su. Nella mia struttura dei componenti ora ci sono tre BarButton, ma quando eseguo l'app, tutto ha funzionato normalmente. Semplicemente non ha senso. –

2

Il seguente dovrebbe risolvere il tuo problema

-(void)viewDidAppear:(BOOL)animated 
{ 
    self.navigationController.navigationBar.backItem.title = @"back"; 
} 

È inoltre possibile utilizzare questa sintassi Objective-C

[[self.navigationController.navigationBar backItem] setTitle:@"back"]; 
6

Diciamo che stai spingendo il tuo viewcontro ller A -> B

In viewcontroller Una prova ad aggiungere questo codice in viewDidLoad metodo

UIBarButtonItem *btn_Back = [[UIBarButtonItem alloc] initWithTitle:@"Back" 
style:UIBarButtonItemStylePlain target:nil action:nil]; 
self.navigationItem.backBarButtonItem=btn_Back; 

Così si vedrà il pulsante "Indietro" in viewcontroller B

1

basta farlo in questo modo, si del modo più semplice ho trovato fino ad ora:

Creare un costume di nuovo il pulsante e aggiungerlo nella barra di navigazione sinistra pulsante proprietà elemento:

- (void)viewDidLoad 
{ 
UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
UIImage *backBtnImage = [UIImage imageNamed:@"Backnavigation.png"] ; // Here set the back button image 
[backBtn setBackgroundImage:backBtnImage forState:UIControlStateNormal]; 
[backBtn addTarget:self action:@selector(handleBack:) forControlEvents:UIControlEventTouchUpInside]; 
backBtn.frame = CGRectMake(0, 0, 24, 24); 
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:backBtn] ; 
self.navigationItem.leftBarButtonItem = backButton; 
} 


//Handle the Back Button Event 
- (void) handleBack:(id)sender 
{ 
    // do your custom handler code here 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

Inoltre, in questo modo, non è necessario modificare il titolo di NavigationBar ogni volta.

Ecco il pulsante Indietro per il vostro riferimento: enter image description here