Обновить левые элементы навигации в iOS 11

У меня есть приложение в Apple Store, которое показывает 1 или 2 значка слева от элемента навигации.

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

В компиляции Xcode8 iOS10 он работает правильно, но в Xcode9 iOS11 не обновляет leftBarButtonItems.

У меня есть 2 функции: одна (createMenuBarIcon()) возвращает UIBarButtonItem для кнопки меню burguer, а другая (createBackBarMenuIcon()) возвращает другой UIBarButtonItem для стрелки влево.

Это код, который я использую для размещения ButtonItems слева:

self.navigationItem.leftItemsSupplementBackButton = true
self.navigationItem.setLeftBarButtonItems([createBackBarMenuIcon(), createMenuBarIcon()], animated: true)

ОБНОВЛЕНИЕ 1

Это происходит после того, как я вызываю setLeftBarButtonItems, а BackButton не появляется. Еще я вижу, что я вставляю self.navigationItem.titleView, но его нет в иерархии представлений.

введите здесь описание изображения введите здесь описание изображения

ОБНОВЛЕНИЕ 2

Хорошо, я нашел проблему. В контроллере у меня есть keyWindow.rootViewController = self только в первом viewController иерархии NavigationController.


person PlugInBoy    schedule 21.09.2017    source источник


Ответы (1)


UINavigationBar использует AutoLayout внутри, начиная с iOS 11, проверьте иерархию представлений, чтобы увидеть, есть ли какие-либо конфликты макетов.

person rpstw    schedule 13.10.2017
comment
Как я могу увидеть конфликты, если я загружаю представления из кода? - person PlugInBoy; 16.10.2017
comment
Хорошо, с помощью кнопки Debug View Hierarcy на панели отладки. Я стараюсь и поздно говорю вам, если нахожу что-то дьявольское. Спасибо!! - person PlugInBoy; 16.10.2017
comment
@PlugInBoy Очевидно, что ваша кнопка «Назад» не была добавлена ​​в иерархию представлений, проверьте свой код. - person rpstw; 17.10.2017