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
}
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))
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.
}
}
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
.
Swift 4:
@IBOutlet var saveButton: UIBarButtonItem!
saveButton.title = "Saved"
des docs
init(title title: String?,
style style: UIBarButtonItemStyle,
target target: AnyObject?,
action action: Selector)