web-dev-qa-db-fra.com

Ajouter UIBarButtonitem dans swift

J'essaie d'ajouter un élément UIBarButton à ma barre de navigation.

Voici ma déclaration de classe de barre de navigation:

import UIKit

class NavigationBarController: UINavigationController {

    override func viewDidLoad() {
        super.viewDidLoad()

        configureToolbar()        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // #pragma mark - Navigation bar data source

    func configureToolbar() {
        let toolbarButtonItems = [
            searchBarButtonItem
        ]
        toolbar.setItems(toolbarButtonItems, animated: true)
    }

    var searchBarButtonItem: UIBarButtonItem {
        return UIBarButtonItem(barButtonSystemItem: .Search, target: self, action: "barButtonItemClicked:")
    }
}

Aucune erreur dans le compilateur, mais tout ce que j'obtiens est une simple barre de navigation.

Comment faire apparaître l'UIBarButtonItem?

17
azochz

Pour ajouter des éléments au NavigationBar d'un NavigationController, ou à un NavigationBar ajouté à un ViewController, vous devrez d'abord passer par NavigationItem. Essaye ça:

self.navigationItem.setRightBarButtonItems(navigationBarButtonItemsArray, animated: true)

// Or if you just want to insert one item.

self.navigationItem.setRightBarButtonItem(UIBarButtonItem(barButtonSystemItem: .Search, target: self, action: "barButtonItemClicked:"), animated: true)

Pour basculer le bouton vers la gauche, remplacez simplement setRightBarButtonItem par setLeftBarButtonItem ou setLeftBarButtonItems.

35
hichamoaj

Vous pouvez ajouter plusieurs boutons à droite ou à gauche de la barre de navigation. Je vais vous montrer à ajouter sur le côté droit et vous pouvez faire de même pour le côté gauche aussi

override func viewDidLoad()
{
    let Nam1BarBtnVar = UIBarButtonItem(barButtonSystemItem: .Edit, target: self, action: #selector(Nam1BarBtnKlkFnc(_:)))
    let Nam2BarBtnVar = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: #selector(Nam2BarBtnKlkFnc(_:)))

    self.navigationItem.setRightBarButtonItems([Nam1BarBtnVar, Nam2BarBtnVar], animated: true)
}

func Nam1BarBtnKlkFnc(BtnPsgVar: UIBarButtonItem)
{
    print("Nam1BarBtnKlk")
}

func Nam2BarBtnKlkFnc(BtnPsgVar: UIBarButtonItem)
{
    print("Nam2BarBtnKlk")
}
7
Sujay U N

Mis à jour pour Swift 3:

Utilisez le code ci-dessous pour ajouter un élément UIBarButton par programme.

Pour ajouter le bouton de la barre de gauche:

  self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: #imageLiteral(resourceName: "your_image_name"), style:  UIBarButtonItemStyle.plain, target: self, action: #selector(yourViewControllerName.barButtonClickAction))

Pour ajouter le bouton de la barre de droite:

  self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: #imageLiteral(resourceName: "your_image_name"), style:  UIBarButtonItemStyle.plain, target: self, action: #selector(yourViewControllerName.barButtonClickAction))

Définition de la méthode:

func barButtonClickAction() {
    print("Button click...")
}
2
Kiran jadhav