2015-06-23 23 views
15

Tôi đang cố gắng đặt rightBarButtonItem trên bộ điều khiển chế độ xem thứ hai của ngăn xếp UINavigationViewController.IOS rightBarButtonItem trên UINavigationController trong swift

Tôi đang tạo và đặt nút trong viewDidLoad của trình điều khiển chế độ xem mà tôi muốn hiển thị. Mã thực tế của tôi trông giống như sau:

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

Tôi đang thiếu gì? Nút không xuất hiện.

Trả lời

24

Bạn nên đặt menu_button_ làm rightBarButtonItem trong số viewController thay vì navigationController.

Hãy thử

self.navigationItem.rightBarButtonItem = menu_button_ 

thay

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

Bất cứ ý tưởng tại sao nó không làm việc khi đi qua bộ điều khiển chuyển hướng ? – Nico

6

thử với sau code. nó làm việc cho tôi.

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 

Và nếu bạn muốn giải quyết custom image thì vui lòng kiểm tra hướng dẫn của apple trên liên kết bên dưới.

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

+0

Cảm ơn các mẹo @abhishek. – Marcone

+0

Chào mừng @Marcone –

1

Tạo một phần mở rộng của UINavigationItem như -

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

    } 
} 

Và gọi nó từ viewDidLoad() như -

self.navigationItem.addSettingButtonOnRight() 
Các vấn đề liên quan