2016-10-07 12 views
1

Как скрыть элемент левой кнопки?Скрыть элементы панели кнопок swift

В моей раскадровке я перетащил навигационную панель на мой контроллер просмотра, а затем элемент с кнопкой бара. При определенных условиях я хочу скрыть элемент кнопки «Бар».

Ничего из этого не работает:

override func viewDidLoad() { 
    self.navigationItem.leftBarButtonItem = nil 
    self.navigationItem.leftBarButtonItems = [] 
    self.navigationItem.setLeftBarButtonItems([], animated: true) 
} 
+0

все они должны работать, если нет, попробуйте 'self.navigationController.navigationItem' – Tj3n

+0

Это не относится, вероятно, вы должны назвать' super' в реализации 'viewDidLoad'. – matt

+0

matt почему вы должны называть super.viewDidLoad – toast

ответ

4

Я перетащил панель навигации на мой View Controller

Ну, нет! Существует большая разница между интерфейсом навигационного контроллера, в котором вы устанавливаете navigationItem, и панель с рыхлым гусям, которая сидит там в интерфейсе, и это то, что у вас есть.

Встроить контроллер своего вида в UINavigationController и сделать все правильно. Затем установите navigationItem, и его свойства будут работать, как ожидалось.

+0

Ну ладно, поэтому при каких обстоятельствах вы должны встраиваться в контроллер навигационного представления и когда вы его перетаскиваете? – toast

+0

Предыдущий контроллер представления встроен в контроллер навигации. Означает ли это, что мне нужно встроить каждый контроллер вида в контроллер навигации, чтобы добавить кнопки панели в раскадровку? Потому что я не могу добавить элементы бара на раскадровку, если я не перетаскиваю панель навигации в VC. То как я получил в этом беспорядке для начала. – toast

+0

@toast Если предыдущий v.c. уже встроен в контроллер навигации, и у вас есть push-переход от него к этому, тогда автоматически должна быть панель навигации наверху этого! Если нет, то просто добавьте _navigation item_ (а не панель навигации), и теперь вы можете поместить в него барные кнопки. – matt

0

У вас нет доступа к self.navigationItem.leftBarButtonItem, потому что вы вручную перетаскиваете navigationBar из раскадровки. Я бы предложил сделать вместо следующее:

  1. добавьте IBOutlet из BarButtonItem (например: barButton), который вы создали в раскадровке
  2. barButton.title = ""
  3. barButton.isEnable = ложь

Это скроет ваш BarButtonItem, и вы можете просто показать его позже.

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