Как скрыть элемент кнопки панели для определенных пользователей
У меня есть элемент кнопки панели настроек (устанавливается как элемент кнопки левой панели). Я просто хочу отобразить его, если пользователь вошел в систему.
Я думал, что могу использовать следующее для анонимных пользователей
navigationItem.leftBarButtonItem = nil
Но как я могу показать его, как только они вошли?
Ответы
Ответ 1
Вы можете сохранить копию свойства leftBarButtonItem в свойстве strong
и установить его обратно после входа в систему.
var leftBarButtonItem : UIBarButtonItem!
Внутри viewDidLoad
self.leftBarButtonItem = UIBarButtonItem(title: "test", style: UIBarButtonItemStyle.Plain, target: nil, action: nil)
В логике
if loggedIn
{
self.navigationItem.leftBarButtonItem = self.leftBarButtonItem
}
else
{
self.navigationItem.leftBarButtonItem = nil
}
Ответ 2
Лучший способ - это просто настроить ваш батон с изображением. Установите barbuttom.image = nil
на Скрыть, чтобы снова назначить отображаемое изображение. И не забудьте сделать barbutton isEnabled как false.
Ответ 3
У меня больше, что 2 элемента меню и remove/add menuitem являются накладными расходами. Этот фрагмент кода работал у меня.
func showMenuItem(){
menuItemQuit.customView?.isHidden = false
menuItemQuit.plainView.isHidden = false
}
func hideMenuItem(){
menuItemQuit.customView?.isHidden = true
menuItemQuit.plainView.isHidden = true
}
Ответ 4
если вы хотите скрыть/показать UIBarButtonItem: для Swift 3
Используется под простым кодом:
Декларация:
var doneButton = UIBarButtonItem()
В ViewDidLoad() или ViewWillAppear() или где вы хотите скрыть его: [hide bar button]
self.navigationItem.rightBarButtonItem = nil
где вы хотите показать кнопку панели: [использовать в любом месте вашего кода]
self.navigationItem.rightBarButtonItem = self.doneButton
doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.plain, target: self, action: #selector(YourViewController.dismissPicker))