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