2015-01-29 11 views
14

Jestem początkującym programistą iPhone'a.Jak ustawić tytuł dla UIBarButtonItem?

Jak mogę programowo ustawić tytuł dla UIBarButtonItem?

Mój kod jest następujący:

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

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

Odpowiedz

23

Użyj innego initialiser który pozwala określić tytuł:

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

Swift 3.1 Aktualizacja

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

od docs

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

Swift 2 odpowiedź

Można tylko dodać następujące viewDidLoad:

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

LUB

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

Kod ViewController.Swift poniżej by ustawić nazwę barButtonItemClicked użyłeś . Użyłem UIBarButtonItem, aby pokazać, jak ustawić tytuł. Ale przystosowanie jej do funkcji jest banalne.

2

W moim przypadku chciałem przełączać pomiędzy Edycja | Gotowe. Jednak nie mogłem użyć leftBarButtonItem, ponieważ miałem już inny UIBarButtonItem.

Co zrobiłem jest następujący:

1- Tworzenie @IBOutlet weak var edit: UIBarButtonItem!

2- Następnie zmiennej trzymać Stan: var isEditingMode = false

3- Teraz w viewDidLoad:

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

Inicjuję selektor edit.action na moją funkcję niestandardową toogleEditor. Chcę móc zmienić tytuł za każdym razem, gdy pojawi się akcja.

4- Załóż 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) 
} 

Funkcja ta jest wyzwalana za każdym razem, gdy użytkownik kliknij UIBarItemButton. Jedyne, co można zrobić, to zmienić ustawienia na UITableViewController.

+0

Działa idealnie - użyłem go tam, gdzie muszę przełączać się między ruchomymi komórkami i rozpoznawać wybór komórek –

Powiązane problemy