2015-06-23 3 views
15

Я пытаюсь поставить rightBarButtonItem на контроллер второго представления стека UINavigationViewController.IOS rightBarButtonItem on UINavigationController in swift

Я создаю и устанавливаю кнопку в viewDidLoad контроллера вида, который я хочу показать. Мой фактический код выглядит так:

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

Что мне не хватает? Кнопка не отображается.

ответ

24

Вы должны установить menu_button_ как rightBarButtonItem вашего viewController, а не navigationController.

Попробуйте

self.navigationItem.rightBarButtonItem = menu_button_ 

вместо

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

Любая идея, почему это не работает, когда происходит через навигации контроллера ? – Nico

6

попробуйте следующее code. это работает для меня.

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 

И если вы хотите, чтобы осесть custom image, пожалуйста, проверьте с руководящими яблонь по ссылке ниже.

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

+0

Спасибо за советы @abhishek. – Marcone

+0

Добро пожаловать @Marcone –

1

Создать расширение UINavigationItem как -

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

    } 
} 

И вызвать его из viewDidLoad(), как -

self.navigationItem.addSettingButtonOnRight()