Как установить заголовок для UIBarButtonItem?
Я начинающий разработчик iPhone.
Как я могу программно установить заголовок для UIBarButtonItem
?
Мой код следующий:
self.navigationItem.rightBarButtonItems =
UIBarButtonItem(
barButtonSystemItem: .Cancel, target: self,
action: "barButtonItemClicked:")
@IBAction func barButtonItemClicked(sender: UIBarButtonItem) {
//print something
}
Ответы
Ответ 1
Используйте другой инициализатор, который позволяет указать заголовок:
UIBarButtonItem(title: "title", style: .Plain, target: self, action: "barButtonItemClicked:")
Обновление Swift 3.1
UIBarButtonItem(title: "title", style: .plain, target: self, action: #selector(barButtonItemClicked))
Ответ 2
Ответ 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.
}
}
Ответ 3
В моем случае я хотел переключиться между 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
.
Ответ 4
из документов
init(title title: String?,
style style: UIBarButtonItemStyle,
target target: AnyObject?,
action action: Selector)