2017-01-02 4 views
0

У меня есть приложение, которое запрашивает у пользователя различную информацию перед выполнением задачи. Как только вся информация будет введена пользователем, я сделаю UIApplication.shared.openUrl(url: url), а затем self.navigationController?.popToRootViewController(animated: true). Приложение возвращается к контроллеру корневого представления; однако подсказка навигационного элемента с последнего контроллера просмотра теперь включена в элемент навигации контроллера корневого представления.popToRootViewController не удаляет приглашение

Кто-нибудь понимает, почему это происходит, и хороший способ его исправить? Я мог бы просто установить приглашение "", когда контроллер корневого представления снова появится, но я хотел бы решить проблему, а не облегчить симптом.

Update

Per ответ @Shad «s, я обновил свой вид контроллер с ниже код и все работает, как ожидалось.

override func viewWillDisappear(_ animated: Bool) { 
    super.viewWillDisappear(animated)  
    self.navigationItem.prompt = nil 
} 
+0

Какой пункт навигации предлагается? Обновите свой вопрос с помощью соответствующего кода. – rmaddy

+0

У меня нет кода для установки подсказки навигационного элемента. Всплывающие подсказки навигационных элементов являются статичными в файлах раскадровки. – Jake

+0

Я пытался переделать то, что у вас есть, но у меня нет никаких проблем. – bubuxu

ответ

0

Причина заключается в том, что ваш подсказки добавляется к окну и виден даже был добавлен родительский View-Controller, на котором подсказывает, в настоящее время не видно. Мы можем подробно остановиться, если вы разделите код.

Однако есть способ отклонить приглашения перед возвратом в RootViewController. Вы можете использовать -(void) viewWillDisappear:(BOOL)animated, чтобы отклонить приглашения . Просто удалите приглашения вид из родительского контроллера View, вызвав removeFromSuperview() на -(void) viewWillDisappear:(BOOL)animated. Предполагая, что ваши приглашения - это UIView.

+0

, это решило мою проблему. однако я не думаю, что это сработает в случае, если в стеке появится другой контроллер представления (например, модальный). что приведет к тому, что приглашение будет пустым после возврата к последнему контроллеру представления. мне все еще интересно узнать, почему это происходит ... – Jake

+0

Можете ли вы поделиться своим кодом просмотра подсказок? – Shad

+0

У меня нет кода, устанавливающего подсказку, кроме того, что вы предложили в viewWillDisappear. Всплывающие сообщения задаются в файлах раскадровки. – Jake

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