2015-04-21 58 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

啊,我明白了!是的,那是我从未想过的事情!谢谢! –

相关问题