web-dev-qa-db-fra.com

iOS rightBarButtonItem sur UINavigationController dans swift

J'essaie de mettre une rightBarButtonItem sur un deuxième contrôleur de vue d'une pile UINavigationViewController.

Je crée et configure le bouton dans viewDidLoad du contrôleur de vue que je souhaite afficher. Mon code actuel ressemble à ceci:

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

Qu'est-ce que je rate? Le bouton n'apparaît pas.

19
Marcone

Vous devez définir le menu_button_ comme la rightBarButtonItem de votre viewController plutôt que le navigationController.

Essayer

self.navigationItem.rightBarButtonItem = menu_button_

au lieu de

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

essayez avec code. suivant cela fonctionne pour moi.

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

Et si vous souhaitez régler custom image, veuillez consulter les directives Apple sur le lien ci-dessous.

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

10
Abhishek Sharma

Créez une extension de UINavigationItem comme -

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

    }
}

Et appelez-le depuis viewDidLoad () comme -

self.navigationItem.addSettingButtonOnRight()
2
Dhiman Ranjit