2015-01-29 2 views
14

Я разработчик iPhone для начинающих.Как установить заголовок для UIBarButtonItem?

Как программно установить заголовок для UIBarButtonItem?

Мой код выглядит следующим образом:

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

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

ответ

23

Используйте разный инициализатор, что позволяет указать название:

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

Swift 3.1 Update

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

из документации

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

Swift 2 ответ

Вы можете просто добавить следующее viewDidLoad:

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

ИЛИ

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

ViewController.Swift код ниже будет установить имя barButtonItemClicked вы использовали , Я использовал UIBarButtonItem, чтобы показать, как установить заголовок. Но тривиально адаптировать его для функции.

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

В моем случае я хотел переключиться между Edit | Done. Однако я не мог использовать leftBarButtonItem, потому что у меня уже был еще UIBarButtonItem.

То, что я сделал следующий:

1- Создать @IBOutlet weak var edit: UIBarButtonItem!

2- Тогда переменную для хранения состояния: var isEditingMode = false

3- Сейчас в viewDidLoad:

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

Я инициализирую селектор edit.action моей пользовательской функции toogleEditor. Я хочу иметь возможность изменять заголовок всякий раз, когда происходит действие.

4- Создание 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) 
} 

Эта функция вызывается каждый раз, когда пользователь нажимает UIBarItemButton. Единственное, что нужно сделать, это использовать setEditing(…), чтобы изменить поведение UITableViewController.

+0

Работает отлично - используется там, где мне нужно переключаться между движущимися ячейками и распознавать выбор ячейки –

Смежные вопросы