2015-06-23 19 views
15

Próbuję umieścić rightBarButtonItem na drugim kontrolerem widoku stosu UINavigationViewController.IOS rightBarButtonItem na UINavigationController w swift

Tworzę i ustawiam przycisk w kontrolerze widoku, który chcę pokazać. Mój rzeczywisty kod wygląda tak:

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

Czego mi brakuje? Przycisk nie pojawia się.

Odpowiedz

24

Powinieneś ustawić menu_button_ jako rightBarButtonItem swojego viewController zamiast navigationController.

Spróbuj

self.navigationItem.rightBarButtonItem = menu_button_ 

zamiast

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

jakiś pomysł, dlaczego to nie działa, gdy przechodząc przez kontrolera nawigacyjnego ? – Nico

6

spróbuj następujących code. to działa na mnie.

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 

A jeśli chcesz osiedlić się custom image następnie należy sprawdzić wytyczne Apple na poniższy link.

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

+0

Dzięki za porady @abhishek. – Marcone

+0

Powitanie @Marcone –

1

Załóż przedłużenie UINavigationItem podobnego -

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

    } 
} 

i wywołać ją z viewDidLoad() jak -

self.navigationItem.addSettingButtonOnRight() 
Powiązane problemy