web-dev-qa-db-fra.com

Comment définir le titre pour UIBarButtonItem?

Je suis un développeur iPhone débutant.

Comment puis-je définir par programme le titre de la UIBarButtonItem?

Mon code est le suivant:

self.navigationItem.rightBarButtonItems =
    UIBarButtonItem(
        barButtonSystemItem: .Cancel, target: self,
        action: "barButtonItemClicked:")

@IBAction func barButtonItemClicked(sender: UIBarButtonItem) {
    //print something
}
15
KSL

Utilisez un autre initialiseur qui vous permet de spécifier le titre:

UIBarButtonItem(title: "title", style: .Plain, target: self, action: "barButtonItemClicked:")

Mise à jour Swift 3.1

UIBarButtonItem(title: "title", style: .plain, target: self, action: #selector(barButtonItemClicked))
26
Kirsteins

Swift 2 réponse

Vous pouvez simplement ajouter ce qui suit à viewDidLoad:

// Some text
self.barButtonItemClicked.title = "Right Button!"

OR

// A Unicode Gear Symbol
// See: http://graphemica.com/%E2%9A%99
self.barButtonItemClicked.title = "\u{2699}"

Le code ViewController.Swift ci-dessous définit le nom barButtonItemClicked que vous avez utilisé. J'ai utilisé un UIBarButtonItem pour montrer comment définir le titre. Mais il est trivial de l’adapter à une fonction. 

import UIKit

class ViewController: UIViewController {

    // Please make sure the line below is properly connected to your Storyboard!
    @IBOutlet weak var barButtonItemClicked: UIBarButtonItem!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

       // Set the text of the NavBarButtonItem Title  
       self.barButtonItemClicked.title = "Right Button!"

       // Gear Icon
       // self.barButtonItemClicked.title = "\u{2699}"

    }

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

}
10
rvg

Dans mon cas, je voulais basculer entre Éditer | Terminé . Cependant, je ne pouvais pas utiliser le leftBarButtonItem car j’avais déjà une autre UIBarButtonItem.

Ce que j'ai fait est le suivant:

1- Créer @IBOutlet weak var edit: UIBarButtonItem!

2- Puis une variable pour contenir l'état: var isEditingMode = false

3- Maintenant dans la viewDidLoad:

override func viewDidLoad() {
    …
    self.edit.action = #selector(self.toogleEditor(_:))
    self.edit.title = "Edit"
    self.setEditing(isEditingMode, animated: true)
    …
}

J'initialise le sélecteur edit.action à ma fonction personnalisée toogleEditor. Je veux pouvoir changer le titre chaque fois qu'une action se produit.

4- Créer une IBAction:

@IBAction func toogleEditor(sender: AnyObject) {

    if isEditingMode
    {
        isEditingMode = false
        self.edit.title = "Edit"
    }
    else
    {
        isEditingMode = true
        self.edit.title = "Done"
    }
    self.setEditing(isEditingMode, animated: true)
}

Cette fonction est déclenchée chaque fois que l'utilisateur clique sur la variable UIBarItemButton. La seule chose à faire est d'utiliser la setEditing(…) pour changer le comportement de la UITableViewController.

3
Manu

Swift 4:

@IBOutlet var saveButton: UIBarButtonItem!

saveButton.title = "Saved"
0
Joel

des docs

init(title title: String?,
 style style: UIBarButtonItemStyle,
target target: AnyObject?,
action action: Selector)
0
RyanTCB