2016-09-14 4 views
0

У меня есть проблема с отображением кнопки на навигационном контроллере. Я исследовал это, и я думаю, что это связано с тем, как работает навигация. Выталкивается и выгружается из стека.Как узнать контроллер навигации, который является частью текущего viewController?

Вот что у меня есть:

У меня есть начальное представление в качестве навигационного контроллера. Этот контроллер вызывает несколько просмотров, но представление, с которым я столкнулся, - это UICollectionViewController. Это вызвано нажатием кнопки на первом viewController, подключенном к navigationController. Затем у меня есть настройка segue, которая идет от UICollectionViewCell к новому ViewController. Поэтому я предполагаю, что это второй уровень NavigationController.

Во-вторых, у меня есть обратная кнопка Изображение, которое отображается в моей навигации, а не текст < Назад.

Кнопка «Назад» отлично отображается в навигационном контроллере на всех экранах, кроме тех, которые вызываются со второго уровня.

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

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

Я пытался программным образом добавить кнопку в контроллер навигации, связанный с текущим видом. Я использую этот код:

override func viewDidLoad() { 
    super.viewDidLoad() 
    var image = UIImage(named: "NavLogo") 
    var back_image = UIImage(named: "BackButton") 
    image = image?.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 
    back_image = back_image?.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 


    self.navigationController?.navigationItem.rightBarButtonItem = UIBarButtonItem(image: image, style: UIBarButtonItemStyle.plain, target: nil, action: nil) 

    self.navigationController?.navigationItem.leftBarButtonItem = UIBarButtonItem(image: back_image, style: UIBarButtonItemStyle.plain, target: nil, action: nil) 
} 

Этот код, похоже, не добавляет кнопку к текущему навигационному контроллеру.

Этот проект использует Swift 3 и Xcode 8

ответ

2

Используйте

self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: image, style: UIBarButtonItemStyle.plain, target: nil, action: nil) 

вместо

self.navigationController?.navigationItem.rightBarButtonItem = UIBarButtonItem(image: image, style: UIBarButtonItemStyle.plain, target: nil, action: nil) 

Причина этого объясняется в этом link.

+0

Я пробовал без этого, но не работал. Забавно, что отображается значок rightBarButtonItem. –

+0

Керри, у тебя есть правильный ответ, как бы то ни было, какой-то другой, такой же, как я, не забывает об этом, я ошибся в воображении. Спасибо за помощь. –

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