Контроллер анимированного всплывающего окна iOS, в результате чего элемент навигации не открывается

Фон:

У меня есть два вида контроллеров A а также B где B толкается сверху A через навигационный контроллер. A а также B у каждого есть свой элемент навигации.

B обычно появляется анимация, но при определенных условиях операция захвата немедленно захватывается и A представляет другой контроллер представления, Cбез анимации.

Я заметил, что после C уволен, Bэлементы навигации по-прежнему на панели навигации, когда B ушел и A является контроллером вида навигационного контроллера.

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

Вопрос:

Я знаю хаки, которые можно использовать для выполнения этой работы - не анимировать операцию pop в определенных условиях - но в конце концов это хак, который портит дизайн и ответственность каждого контроллера представления. (B не должен знать, что это должно появиться без анимации. Ни один из Bбизнес.)

Я пытался с помощью navigationBar.popItem(animated:) в A но это дает мне libc++abi.dylib исключение по какой-то причине.

Так будет ли более элегантный способ справиться с этой ситуацией? Или кто-нибудь знает почему popItem(animated:) приводит к исключению?

0 ответов