从AppDelegate导航时,导航栏消失

时间:2018-03-11 17:42:31

标签: ios swift uinavigationcontroller uinavigationbar

当用户点击通知托盘时,我需要导航到特定的视图控制器。因此我需要从AppDelegate类重定向它们:

以下是AppDelegate中的代码:

if let myVc = UIStoryboard(name : "Main",bundle : nil).instantiateViewController(withIdentifier: "MyViewController")
    as? MyViewController {

         myVc.postId = Int(postId)
         if let navigationController = self.window?.rootViewController /* as? UINavigationController */{
          navigationController.show(myVc, sender: Any?.self)
         }
  }

通过使用此代码,当我点击通知托盘时,我可以重定向到我的MyViewController,但问题是导航栏已经消失,因此应用程序只是停留在那里。

我也试过使用它,但是通过下面的代码,它无法重定向到myPostVc:

if let navigationController = self.window?.rootViewController  as? UINavigationController {
  navigationController.pushViewController(myVc, animated: true)
}

所以我的问题是:

如何从目标视图控制器上的导航栏导航到AppDelegate的特定视图控制器?

1 个答案:

答案 0 :(得分:1)

将tabBar嵌入导航控制器中(在代码中,当您选择一个标签栏并希望将其嵌入故事板中的naigation控制器时,嵌入显示为灰色)并使用此按钮推送VC

 if let navigationController = self.window?.rootViewController  as? UINavigationController {
    navigationController.pushViewController(myVc, animated: true)
 }

或者你可以这样做

if let cu = self.window?.rootViewController as? UITabBarController
 {         
       let nav: UINavigationController = UINavigationController()

        self.window?.rootViewController = nav

        let str = UIStoryboard.init(name: "Main", bundle: nil)

        let rr = str.instantiateViewController(withIdentifier: "idOFPushedVC") 

         nav.setViewControllers([cu,rr], animated: true)

  }