1

我的初始视图控制器是一个标签栏控制器,在选项卡控制器中有几个UINavigationControllers,在其中一个UINavigationControllers中提供了一个模式,其中另一个UINavigationController是使用另一个UIViewControllers流创建的。从AppDelegate通过远程通知推送到UINavigationController

我需要通过推送到该视图层次结构的“最深”部分之一来响应在App Delegate中收到的远程通知。

我可以重新创建一个UINavigationController并按名称启动适当的UIViewController,但它使用户高度干燥,没有其他地方可去。

有没有一种方法让用户回到适当的导航流程中?

回答

4

我得到这个工作,我的应用程序代表的didReceiveRemoteNotification方法方式:

let rootTabbarController = self.window?.rootViewController as UITabBarController 

let mainStoryboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 

let firstNavigationController = mainStoryboard.instantiateViewControllerWithIdentifier("firstNavVc") as UINavigationController 

rootTabbarController.viewControllers![0] = firstNavigationController 

let vControllerForFirstNavController = (rootTabbarController.viewControllers![0] as UINavigationController).topViewController as MainViewController 

let firstDetailsNavController = mainStoryboard.instantiateViewControllerWithIdentifier("detailsNavController") as MainDetailsMenuNavigationController 

let detailsVc = firstDetailsNavController.topViewController as MainDetailsViewController 

firstNavigationController.presentViewController(firstDetailsNavController, animated: false, completion: nil) 

let specificInfoVc = mainStoryboard.instantiateViewControllerWithIdentifier("sDetails") as SpecificDetailsViewController 

firstDetailsNavController.pushViewController(specificInfoVc, animated: true) 
+1

只是一个快速的音符,在我applicationWillResignActive方法,我只好根窗口设置为第一个标签栏控制器我以上使用 - 这种方式,如果用户离开应用程序几个级别深,但然后点击应用程序外部的通知应用程序现在将在第一级 – 2015-04-02 22:20:39