Показать/скрыть barButtonItem
Я пытаюсь показать/скрыть UIBarButtonItem
. Я добавил barButton
в правую сторону в storyboard
. Затем в viewDidLoad
я сделал rightBarButtonItem
до nil
. Позже я установил его в button
, который я добавил в storyboard
. Здесь мой код:
// Right barButtonItem added in storybord:
@IBOutlet weak var deleteBarButton: UIBarButtonItem!
// viewDidLoad
self.navigationItem.rightBarButtonItem = nil
// Later on...
self.navigationItem.rightBarButtonItem = self.deleteBarButton
Когда я устанавливаю self.deleteBarButton
в rightBarButtonItem
, ничего не происходит. Он не показывает это. Что я делаю неправильно, и какой правильный/самый эффективный способ показать/скрыть barButtonItem
?
Обновление
Я попробовал следующее:
self.deleteBarButton.hidden = true
Но я получаю следующую ошибку:
UIBarButtonItem
не имеет члена с именем 'hidden'
Ответы
Ответ 1
Только что получил ответ! Все, что вам нужно сделать, это создать strong IBOutlet
, тогда вы можете сделать следующее:
// viewDidLoad
self.navigationItem.rightBarButtonItem = nil
// Later on...
self.navigationItem.rightBarButtonItem = self.deleteBarButton
Ответ 2
Обновление 2
Вы можете просто навести текст кнопки на ничего:
self.deleteBarButton.title = "";
Обновление 1
Я бы использовал свойство enabled
, чтобы осветить кнопку следующим образом (хотя она не полностью делает кнопку невидимой, она позволяет пользователю узнать, что она не выполнит действие).
Это может действовать как переменная, чтобы вы знали, что кнопка скрыта в вашем случае:
Освещен: (место в ViewDidLoad)
self.deleteBarButton.enabled = true;
Темнее: (место позже)
self.deleteBarButton.enabled = false;
Затем я добавлю следующее, чтобы полностью исчезнуть:
self.navigationController?.navigationItem.rightBarButtonItem?.tintColor = UIColor.clearColor();
Ответ 3
Попробуйте создать свой barButton вручную в viewDidLoad, а затем отобразить/скрыть вашу кнопку.
код:
var barButton: UIBarButtonItem!
func viewDidLoad() {
super.viewDidLoad()
barButton = UIBarButtonItem(title: "Title", style: .Plain, target: self, action: Selector("target_function"))
self.navigationItem.rightBarButtonItem = barButton
}
func someFunction() {
self.navigationItem.rightBarButtonItem = nil
// or
self.navigationItem.rightBarButtonItem = barButton
}
Ответ 4
Это работает идеально для меня.
self.navBar.title = ""
self.navBar.enabled = false