-1

Я работаю на какой-то старый код, который я не писал, и это действительно не хорошо ... архитектураОтклонить представлен контроллер представления, после того, как контроллер представления Предъявление был выпущен

Ситуация такова, что контроллер представления представляет собой настраиваемый контроллер представления по модулю, однако каждые 30 секунд репрезентативный контроллер представления создается.

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

Я попробовал позвонить [self.presentedViewController dismissViewControllerAnimated]; на вновь воссозданный контроллер, но presentedViewController - это нуль, как и следовало ожидать.

Я также попытался сохранить слабую ссылку на контроллер модального представления, а затем, когда отображающий VC перезагрузится, установите это значение в значение старого VC. Это позволило мне позвонить self.customModalVC dismissViewControllerAnimated];, но это вызывает вышеупомянутый белый экран, возможно, потому, что он представляет VC больше не находится в стеке?

Любые предложения приветствуются.

+0

почему он воссоздается каждые 30 секунд? это звучит немного странно для меня. Я также вижу способ сохранить представление этого модального представления без ссылки на него, которая, вероятно, будет связана с проблемами памяти из-за того, что вам нужно будет удерживать ссылку на viewController, удерживая ее. Поэтому ваш лучший выбор звучит как рефакторинг/изменение этого. – zero3nna

+0

Это связано с сетевыми звонками, я согласен, что это абсолютно глупый способ сделать это. Не было бы моего подхода. Похоже, у меня на самом деле нет много вариантов, кроме рефакторинга ... PM будет любить билет на 4 часа, чтобы попасть в трехмерный билет ха-ха. –

+0

Да, это звучит как забавный билет. – zero3nna

ответ

-1

Попробуйте прохождение навигационного контроллера вновь представленный ViewController:

presentedVC.navigation = self.navigationController 

Добавьте к этому только что созданным для увольнения

self.dismiss(animated: false) { 
       _ = self.navigation?.popViewController(animated: true) 
      } 
+0

Свойство 'navigationController'' UIViewController' только для чтения. –

+0

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

-1

Я думаю, вы должны сначала получить представлен вида контроллера, это будет последним на иерархию просмотра стека и вызвать на него dismiss, а затем удалить контроллер, который был родителем how to get top controller see here

+0

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

+0

Хорошо, извините, открылся с мобильного и что-то пропустил. В любом случае, объясните, пожалуйста, что вы имеете в виду «воссоздать» контроллер. И почему вы не отклонили представленный контроллер представления перед воссозданием, иначе ваш представленный vc должен знать toViewControlle, на котором он был представлен и появится после увольнения. –

+0

Ок, извините, открылся из мобильного и что-то пропустил. В любом случае, объясните, пожалуйста, что вы имеете в виду «воссоздать» контроллер. И почему вы не отклонили представленный диспетчер представлений перед воссозданием, иначе ваш представленный vc должен знать toViewControlle, на котором он был представлен и появится после увольнения, представленного –

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

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