2015-06-23 10 views
15

Ich versuche, eine rightBarButtonItem auf einem zweiten View-Controller eines UINavigationViewController-Stack zu setzen.IOS rightBarButtonItem auf UINavigationController in swift

Ich erstelle und setze die Schaltfläche in viewDidLoad des View-Controllers, den ich zeigen möchte. Mein tatsächlicher Code sieht so aus:

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_ 
} 

Was vermisse ich? Die Schaltfläche wird nicht angezeigt.

Antwort

24

Sie sollten die menu_button_ als die rightBarButtonItem Ihrer viewController anstelle der navigationController setzen.

Versuchen

self.navigationItem.rightBarButtonItem = menu_button_ 

statt

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

Jede Idee, warum es nicht funktioniert, wenn durch die Navigationssteuerung gehen ? – Nico

6

mit versuchen code. folgenden es für mich funktioniert.

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 

Und wenn Sie wollen custom image absitzen dann mit Apfel-Richtlinien auf untenstehenden Link bitte überprüfen.

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

+0

Danke für die Tipps @abhishek. – Marcone

+0

Willkommen @Marcone –

1

Eine Erweiterung von UINavigationItem wie -

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(){ 

    } 
} 

Und nennen Sie es aus viewDidLoad() wie -

self.navigationItem.addSettingButtonOnRight()