2015-04-21 57 views
0

目前,我正在努力通過添加推送通知來改進我目前正在處理的iOS應用程序。這些推送通知會發送給人們,通知他們應用程序內部會採取一些措施。推送通知:從AppDelegate導航到ViewController

我目前正在執行「當你在應用程序內部並且你得到通知」時 - 部分:ReceivedRemoteNotification

現在,由於此方法需要在AppDelegate內部實現,因此我不能僅僅說NavigationController.PushViewController (viewController, true);。創建一個新的NavigationController不起作用。

所以,現在我想知道:有沒有辦法獲得已初始化的NavigationController(因爲我已經打開了應用程序),以便我可以使用PushViewController方法?

或者還有另一種從AppDelegate內導航到ViewController的方法嗎?

+0

當你收到一個推送通知並在你的當前控制器(或NavigationController)中觀察它時,你能否嘗試從APPDelegate發送一個NSNotification,然後進行推送? – Bisca

回答

0

這種嘗試在你的應用程序,以正本清源控制器參考

(希望它的您正在尋找的導航控制器):

//////////////AppDelegate.m 

UINavigationController *currentNavController = (UINavigationController*)self.window.rootViewController 
0

在Xamarin/C#根視圖控制器你的應用程序是:

UIViewControler rootViewController = this.window.RootViewController; 

這應該看起來很像您在AppDelegate中對FinishedLaunching的覆蓋。從那裏你應該能夠瀏覽視圖層次結構,讓你的用戶到正確的地方。

+0

不幸的是,RootViewController是一個自定義控制器,其中有4個NavigationControllers。我無法確定我目前正在使用哪個NavigationController。 –

+0

即使它是自定義控制器,也可以從rootViewController轉換爲您的自定義類型,然後在其中創建方法以允許您執行任何您想要的操作。因此,如果您的推送通知需要某個屏幕位於客戶控制器中的第二個導航控制器上,則應該可以在自定義控制器上創建一個方法來完成該操作。 –

+0

啊,我明白了!是的,那是我從未想過的事情!謝謝! –

相關問題