В моем случае я хотел переключиться между 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
.
Работает отлично - используется там, где мне нужно переключаться между движущимися ячейками и распознавать выбор ячейки –