¿Cómo configuro el título para UIBarButtonItem?

Soy desarrollador de iPhone para principiantes.

¿Cómo puedo establecer mediante progtwigción el título para UIBarButtonItem ?

Mi código es el siguiente:

 self.navigationItem.rightBarButtonItems = UIBarButtonItem( barButtonSystemItem: .Cancel, target: self, action: "barButtonItemClicked:") @IBAction func barButtonItemClicked(sender: UIBarButtonItem) { //print something } 

Solutions Collecting From Web of "¿Cómo configuro el título para UIBarButtonItem?"

Use un inicializador diferente que le permita especificar el título:

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

Swift 3.1 Actualización

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

Swift 2 respuesta

Puede agregar lo siguiente para viewDidLoad :

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

O

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

El código ViewController.Swift continuación establecería el nombre barButtonItemClicked que utilizó. Utilicé un UIBarButtonItem para mostrar cómo configurar el título. Pero es trivial adaptarlo para una function.

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

En mi caso, quería alternar entre Editar | Listo. Sin embargo, no pude usar leftBarButtonItem porque ya tenía otro UIBarButtonItem .

Lo que hice es el siguiente:

1- Crear @IBOutlet weak var edit: UIBarButtonItem!

2- Luego, una variable para mantener el estado: var isEditingMode = false

3- Ahora en la viewDidLoad :

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

Inicializo el selector edit.action a mi function personalizada toogleEditor . Quiero poder cambiar el título cada vez que ocurra una acción.

4- Crea una 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) } 

Esta function se activa cada vez que el usuario hace clic en UIBarItemButton . Lo único que se puede hacer es usar setEditing(…) para cambiar el comportamiento del UITableViewController .

de los documentos

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