2015-01-29 8 views
14

Sono uno sviluppatore iPhone principiante.Come si imposta il titolo per UIBarButtonItem?

Come è possibile impostare il titolo per il UIBarButtonItem?

Il mio codice è il seguente:

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

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

risposta

23

utilizzare diversi initialiser che consente di specificare il titolo:

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

Swift 3.1 Aggiornamento

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

dalla documentazione

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

Swift 2 risposta

Si può solo aggiungere quanto segue alla 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}" 

Il codice ViewController.Swift seguito sarebbe impostare il nome barButtonItemClicked si è utilizzato . Ho usato un UIBarButtonItem per mostrare come impostare il titolo. Ma è banale adattarlo per una funzione.

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

} 
2

Nel mio caso, volevo passare da Modifica | Fine. Tuttavia, non ho potuto utilizzare il leftBarButtonItem perché avevo già un altro UIBarButtonItem.

Quello che ho fatto è il seguente:

1- Creare @IBOutlet weak var edit: UIBarButtonItem!

2- Poi una variabile per contenere lo stato: var isEditingMode = false

3- Ora, nel viewDidLoad:

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

Inizializzo il selettore edit.action sulla mia funzione personalizzata toogleEditor. Voglio poter cambiare il titolo ogni volta che si verifica un'azione.

4- Creare un 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) 
} 

Questa funzione viene attivata ogni volta che l'utente clicca il UIBarItemButton. L'unica cosa da fare è utilizzare setEditing(…) per modificare il comportamento di UITableViewController.

+0

Funziona perfettamente - l'ho usato dove ho bisogno di passare tra le celle in movimento e riconoscere la selezione delle celle –