Segue из всплывающего окна ViewController Swift - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть приложение с 7 экранами (VC), которые встроены в контроллер навигации.

И у меня есть один отдельный VC, который не встроен.Этот VC действует как пользовательское всплывающее окно class PopupView: UIViewController {} и вызывается нажатием кнопки на каждом экране, который у меня есть в моем приложении, с использованием пользовательского перехода (настройка в качестве пользовательского перехода в раскадровке):

open class MIBlurPopupSegue: UIStoryboardSegue {

open override func perform() {
    MIBlurPopup.show(destination, on: source)
} }

В этом всплывающем окне естькнопка, которая должна открывать другой VC (VC всегда один и тот же), который встроен в стек навигации.

То, чего я пытаюсь добиться, - это фактически открыть тот VC, который находится внутри стека навигации, нажав кнопку в Popup VCи затем вернитесь к экрану, где вызывался Popup.

Итак, путешествие пользователя будет выглядеть так: - Открыт VC1 (2,3,5,6,7) -> Вызванный всплывающий ВК -> Нажатая кнопка ->открыл VC4 -> нажал навигационную кнопку возврата -> вернулся к VC1.

И то, что у меня сейчас есть:

  • Подключен в раскадровке все 6 экранов к VC4, с переходамиидентификаторы

  • Tried performSegue(withIdentifier: "toVC4"), present(vc, animated: true, completion: nil)

  • let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil) let controller = storyboard.instantiateViewController(withIdentifier: "VC4") self.present(controller, animated: true, completion: nil)

  • Использование протоколоввызвать func в VC1, но не удалось.

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

1 Ответ

0 голосов
/ 15 сентября 2018

Вы можете попробовать это внутри действия всплывающей кнопки

self.dismiss(animated:true) {
   if let nav = UIApplication.shared.keyWindow?.rootViewController as? UINavigationController {
      let vc1 = storyboard!.instantiateViewController(withIdentifier: "MenuId")
      let finalVC = storyboard!.instantiateViewController(withIdentifier: "finalId")
      nav.setViewControllers([vc1,vc4],animated:true) // set it to false if you want 
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...