Странное поведение с rootViewController при попытке установить его - PullRequest
0 голосов
/ 14 октября 2019

У меня есть модальное представление поверх контроллера навигации.

Я хочу уничтожить весь стек и заново создать новый (перезагрузить).

Однако при назначении нового для window.rootViewController предупреждения появляются во время выполнения, и контроллеры представления не освобождаются.

Чтобы усложнить задачу, я автоматически перехожу к контроллеру модального представления«автоматически» после перезагрузки, и что

Я приложил presx , который демонстрирует возникающие проблемы. Например, если вы запустите его как есть, на iOS 13 вы увидите скачок счетчика с 1 до 3, а на iOS 12 он переместится с 1 на 2. Обе утечки памяти (некоторые или все контроллеры представления не выгружаются).

1 Ответ

1 голос
/ 16 октября 2019

Основная проблема заключается в том, что независимо от того, как вы замените иерархию представлений, ваш представленный VC будет отклонен, что отправит сообщение viewWillAppear вашему "pressedVC" ... в этот момент "pushVC"немедленно загрузит и повторно отобразит «triggerVC»

Что вы, вероятно, хотите сделать, это:

  • Оставьте jumpToModalVC равным false, , пока вы не захотите использовать его
  • При нажатии кнопки в представленном "triggerVC", отмените модальное (self)
  • после завершения отклонения, установите jumpToModalVC в true и восстановите / сбросьте иерархию

Примечание:

Цепные вызовы для сегментов от каждого VC viewWillAppear почти всегда приводят к:

Несбалансированные вызовы для перехода к началу / концу появления

Чтобы избежать этого, лучше всего запускать сегменты с viewDidAppear

Если вы хотите, вы можете добавить меня в качестве «Коллаборатора» в репозитории GitHub (мой идентификатор пользователя GitHub - DonMag), и я могу выдвинуть сделанные мной изменения в виде новой ветви.

...