2015-02-09 10 views
5

Voglio sostituire il testo nel pulsante Indietro un'immagine personalizzata con. Come posso farlo in un codice swift? Non voglio sostituire l'intero backbarbutton dal momento che mi piacerebbe mantenere il comportamento dell'azione di default per tornare all'ultima vista. Mi piacerebbe anche fare un'istruzione switch in base a dove la destinazione posteriore (basata su storyboardId) è così che io possa mostrare immagini diverse in base alla vista.come sostituire/personalizzare indietro immagine pulsante nella navigationController storyboard

questo sostituisce l'immagine ma cancella il comportamento del pulsante di ritorno predefinito, e ho bisogno di discrimante su quale sia la destinazione posteriore in modo che possa mostrare l'immagine posteriore destra.

self.navigationItem.leftBarButtonItem = 
UIBarButtonItem(image:StyleKit.imageOfMap, style:.Plain, target:self, action:nil); 

risposta

10

prova a modificare le leftBarButtonItem:

self.navigationItem.leftBarButtonItem = 
    UIBarButtonItem(image:StyleKit.imageOfMap, style:.Plain, target:self, action:nil); 

ad un backBarButtonItem:

self.navigationItem.backBarButtonItem = 
    UIBarButtonItem(image:StyleKit.imageOfMap, style:.Plain, target:self, action:nil); 

al fine di trarre vantaggio da un'azione predefinita backBarButtonItem s'.

E mettere quella linea di codice nel controller della vista precedente quello vuoi la vostra abitudine di nuovo il pulsante per apparire in

Edit:. Se non si desidera che il simbolo "<" ad apparire nel pulsante, dovrete infatti utilizzare un leftBarButtonItem quindi respingere il controller della vista in un metodo separato, ex:

self.navigationItem.leftBarButtonItem = 
     UIBarButtonItem(image:StyleKit.imageOfMap, style:.Plain, target:self, action:"backButtonPressed:"); 

} 

func backButtonPressed(sender:UIButton) { 
    navigationController?.popViewControllerAnimated(true) 
} 
+0

Oh cool che quasi funziona, 2 domande: come faccio a sbarazzarsi del default MonkeyBonkey

+0

@MonkeyBonkey Non so davvero perché è necessario impostare il pulsante Indietro nel controller precedente, ma così è ... Non è possibile eliminare il

0

Stai cercando qualcosa di simile?

btn = [UIButton buttonWithType:UIButtonTypeCustom];  
[btn setImage:[UIImage imageNamed:@"YOURIMAGE.png"] forState:UIControlStateNormal];  
btn.frame = CGRectMake(0, 0, 30, 30); 
[btn addTarget:self action:@selector(youraction:) forControlEvents:UIControlEventTouchUpInside]; 

self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:btn]autorelease]; 
Problemi correlati