2016-02-25 2 views
0

У меня есть контроллер панели вкладок, который имеет 5 вкладок, каждый с встроенным контроллером навигации. Иногда мне нужно отображать контроллер вида с другой вкладки.Установить пользовательскую кнопку навигации с несколькими навигационными контроллерами

Я перекрывая фондовом обратно текст кнопки < BACK только бы это сказать <, что я с помощью

let backItem = UIBarButtonItem() 
backItem.title = "" 
navigationController?.navigationBar.tintColor = UIColor.whiteColor() 
navigationItem.backBarButtonItem = backItem 

Однако, когда я загрузить контроллер представления из другой панели вкладок (с другим навигационным контроллером), Я не могу понять, как удалить < BACK с контроллера дополнительной навигации, поэтому я могу просто отобразить кнопку как <. Ввод вышеуказанного кода в prepareForSegue: работает с одним контроллером nav, но не при наличии второго. Большое спасибо, любое понимание очень ценится!

ответ

1

Задняя кнопка, которую вы видите, когда контроллер представления надевается на стек навигационный контроллере принадлежит, а не к толкаемому контроллеру представления, а к предыдущему контроллеру зрения, тот, который был показ перед тем в От себя.

Если что вид контроллер говорит:

self.navigationItem.backBarButtonItem = 
    UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil) 

... тогда, когда контроллер представления проталкивается поверх него, кнопка назад не будет отображаться без названия.

+0

Большое спасибо за ответ @matt. Поэтому я понимаю, что установка предыдущего контроллера представления в 'prepareForSegue: 'устанавливает кнопку« Назад »для контроллера, который должен быть нажат. В моей ситуации у меня есть просмотр коллекции с другого контроллера представлений в качестве подзадачи этого родительского контроллера представления. Я поставил код для установки 'backButton.title =" "' in 'prepareForSegue:' как для родительского контроллера представления, так и для контроллера дочернего представления. Я не знаю, где еще будет новый контроллер просмотра, откуда он не изменит заголовок на «». Есть идеи? Еще раз спасибо! – tahoecoop

+0

Зачем это делать в «prepareForSegue»? Если это функция контроллера вида, вы сделали бы это «viewDidLoad». – matt

+0

Это трюк, он корректно работает в 'viewDidLoad:'. Я видел, что это должно быть в 'prepareForSegue:', но это выглядит неправильно. Еще раз спасибо, действительно оцените! – tahoecoop

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