Отклонение модально представленного VC и Popping Представление VC - PullRequest
0 голосов
/ 13 июня 2018

У меня есть viewcontroller, встроенный в navigationcontroller, который помещает еще один viewcontroller в стек.Это нажатие viewcontroller имеет embedded viewcontroller, который сегментирует / модально представляет финал viewcontroller.

. При нажатии кнопки я пытаюсь отклонить финал, представленный viewcontroller, и выдвинуть текущее viewcontroller и вернитесь в исходное состояние.

До сих пор я был в состоянии завершить процесс отклонения, но, похоже, всплывающее окно не работает в обработчике завершения завершения.

Я попытался распечатать иерархию, то есть self.presentingViewController, self.navigationController, self.presentingViewController.presentingViewController ..., все из которых выводят ноль, и по общему признанию застрял теперь при возвращении в начальное состояние.

ВГлядя на иерархию представлений, окончательный вариант viewcontroller находится под UITransitionView отдельно от остальной части стека, о котором я упоминал ранее.

Будем благодарны за любые мысли / указания.

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Так как вы упомянули segues, я думаю unwind segues может помочь.Я создал быстрый тестовый проект, и он действительно работает правильно в вашем сценарии.

В соответствующем вопросе SO есть довольно хороший ответ Для чего нужны сегменты Unwind и как вы их используете? .Сводка ответа для вашего конкретного случая: поместите следующую функцию в ваш начальный контроллер представления:

@IBAction func unwindToThisViewController(segue: UIStoryboardSegue)
{
}

Затем вы можете напрямую «размотаться» к этому контроллеру представления, напрямую используя Storyboard Segues (как в упомянутой ссылке).ответ) или программно через:

self.performSegue(withIdentifier: "unwindToThisViewController", sender: self)

Опять есть хорошая статья под названием Программная работа с раскруткой сегментов в Swift , в которой много деталей.

0 голосов
/ 13 июня 2018

Можете ли вы попробовать

if let nav = UIApplication.shared.keyWindow?.rootViewController as? UINavigationController {

     self.dismiss(animated:true) {

        nav.popToRootViewController(animated:true)
     }
 }
...