Ios swift3如何显示导航视图控制器

Ios swift3如何显示导航视图控制器,ios,swift3,widget,viewcontroller,appdelegate,Ios,Swift3,Widget,Viewcontroller,Appdelegate,我想从通知小部件中打开特定视图。 通常其他答案是创建新视图。(让viewcontroller=…) 因此,如果您继续呼叫,请继续使用内存 因此,我想打开viewA,它已经在我的应用程序中打开,然后移动到viewB 当应用程序启动时,我的应用程序结构基本上是一个viewA 我的想法是,我希望使用navigation.push从现有的viewA移动到viewB,而不是创建新的viewA 检查特定页面是否已存在、如何在顶部显示该页面以及如何导航.push的方法都是可行的 现在,我使用此代码从Appde

我想从通知小部件中打开特定视图。 通常其他答案是创建新视图。
(让viewcontroller=…)
因此,如果您继续呼叫,请继续使用内存

因此,我想打开viewA,它已经在我的应用程序中打开,然后移动到viewB

当应用程序启动时,我的应用程序结构基本上是一个viewA

我的想法是,我希望使用navigation.push从现有的viewA移动到viewB,而不是创建新的viewA

检查特定页面是否已存在、如何在顶部显示该页面以及如何导航.push的方法都是可行的

现在,我使用此代码从
Appdelegate

let MainView: Main_View_List_ = mainStoryboard.instantiateViewController(withIdentifier: "Main_List_View") as! Main_View_List_
let nav = UINavigationontroller.init(rootViewController: MainView)
UIApplication.topViewController()?.present(nav, animated: true, completion: nil)

假设您有权访问导航控制器,则需要执行以下操作以弹出回viewA:

     for viewController in nav.viewControllers {
         if viewController is ViewAClass {
           viewController.pushViewBFlag = true
           nav.popToViewController(viewController, animated: true)
          return
     }
  }
回到viewA后,可以检查pushViewBFlag并创建和推送viewB

或者,由于您似乎正在将viewA设置为导航控制器的根目录,您可以执行以下操作:
nav.poptrootviewcontrolleranimated(true)
,以返回viewA。然后,您需要处理从viewA推送viewB的操作