2015-06-23 10 views
15

Sto provando a mettere un rightBarButtonItem su un secondo controller di visualizzazione di uno stack UINavigationViewController.IOS rightBarButtonItem su UINavigationController in swift

Sto creando e impostando il pulsante in viewDidLoad del controller di visualizzazione che voglio mostrare. Il mio codice effettivo assomiglia a questo:

override func viewDidLoad() { 
    super.viewDidLoad() 
    menu_button_ = UIBarButtonItem(image: UIImage(named: "menu"), 
     style: UIBarButtonItemStyle.Plain , 
     target: self, action: "OnMenuClicked:") 

    self.navigationController!.navigationItem.rightBarButtonItem = menu_button_ 
} 

Cosa mi manca? Il pulsante non appare.

risposta

24

È necessario impostare menu_button_ come rightBarButtonItem del viewController anziché navigationController.

Prova

self.navigationItem.rightBarButtonItem = menu_button_ 

invece

self.navigationController!.navigationItem.rightBarButtonItem = menu_button_ 
+0

Qualsiasi idea del perché non funziona quando si passa attraverso il controller di navigazione ? – Nico

6

provare con i seguenti code. funziona per me.

let homeButton : UIBarButtonItem = UIBarButtonItem(title: "LeftButtonTitle", style: UIBarButtonItemStyle.Plain, target: self, action: "") 

let logButton : UIBarButtonItem = UIBarButtonItem(title: "RigthButtonTitle", style: UIBarButtonItemStyle.Plain, target: self, action: "") 

self.navigationItem.leftBarButtonItem = homeButton 
self.navigationItem.rightBarButtonItem = logButton 

E se si vuole giungere ad un accomodamento custom image quindi si prega di verificare con le linee guida della mela su link qui sotto.

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/BarIcons.html#//apple_ref/doc/uid/TP40006556-CH21-SW1

+0

Grazie per i suggerimenti @abhishek. – Marcone

+0

Benvenuto @Marcone –

1

creare un'estensione di UINavigationItem come -

extension UINavigationItem { 
    func addSettingButtonOnRight(){ 
     let button = UIButton(type: .Custom) 
     button.setTitle("setting", forState: .Normal) 
     button.titleLabel?.font = UIFont.systemFontOfSize(15.0) 
     button.layer.cornerRadius = 5 
     button.backgroundColor = UIColor.grayColor() 
     button.frame = CGRect(x: 0, y: 0, width: 100, height: 25) 
     button.addTarget(self, action: #selector(gotSettingPage), forControlEvents: UIControlEvents.TouchUpInside) 
     let barButton = UIBarButtonItem(customView: button) 

     self.rightBarButtonItem = barButton 
    } 

    func gotSettingPage(){ 

    } 
} 

E chiamare da viewDidLoad() come -

self.navigationItem.addSettingButtonOnRight() 
Problemi correlati