web-dev-qa-db-ja.com

swiftのUINavigationControllerのiOS rightBarButtonItem

rightBarButtonItemスタックの2番目のView ControllerにUINavigationViewControllerを配置しようとしています。

表示したいView Controllerの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_
}

私は何が欠けていますか?ボタンは表示されません。

21
Marcone

menu_button_は、rightBarButtonItemではなく、viewControllernavigationControllerとして設定する必要があります。

試してみる

self.navigationItem.rightBarButtonItem = menu_button_

の代わりに

self.navigationController!.navigationItem.rightBarButtonItem = menu_button_
33
liushuaikobe

次の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その後、Apple以下のリンクのガイドラインを参照してください。

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

10
Abhishek Sharma

次のようなUINavigationItemの拡張を作成します-

extension UINavigationItem {
    func addSettingButtonOnRight(){
        let button = UIButton(type: .custom)
    button.setTitle("setting", for: .normal)
    button.titleLabel?.font = UIFont.systemFont(ofSize: 15.0)
    button.layer.cornerRadius = 5
    button.backgroundColor = .gray
    button.frame = CGRect(x: 0, y: 0, width: 100, height: 25)
    button.addTarget(self, action: #selector(gotSettingPage), for: UIControlEvents.touchUpInside)
    let barButton = UIBarButtonItem(customView: button)

        self.rightBarButtonItem = barButton
    }

    @objc func gotSettingPage(){

    }
}

そして、viewDidLoad()から次のように呼び出します-

self.navigationItem.addSettingButtonOnRight()
2
Dhiman Ranjit