当用户点击推送通知时,关闭当前viewcontroller和打开新viewcontroller的最佳方法是什么

时间:2015-03-12 04:09:32

标签: ios

当用户点按推送通知时,关闭当前UIViewController并打开新UIViewController的最佳方式是什么?

例如,

A(基础UIViewController)打开B(UIViewController)并打开C(UIViewController

并使用点击主页按钮,因此应用程序将进入后台,

之后当用户收到推送通知并点击它时,

app将进入前台。

我要关闭B,C UIViewController(可能是否打开C控制器),然后打开D(UIViewController

像这样的A-> D

你能给我一些提示吗?

2 个答案:

答案 0 :(得分:0)

好吧,当你来自推,这意味着你将来自didReceiveRemoteNotification

didReceiveRemoteNotification

中写下以下代码行
NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray: self.navigationController.viewControllers];

[navigationArray removeAllObjects];    // This is just for remove all view controller from navigation stack.
// [navigationArray removeObjectAtIndex: 2];  // You can pass your index here
self.navigationController.viewControllers = navigationArray;
[navigationArray release];

我希望这很清楚。

注意:当您在app delegate中访问导航控制器时,请使用以下内容访问导航控制器。

(UINavigationController *)self.window.rootViewController

答案 1 :(得分:0)

我遵循的方法是,在AppDelegate.m文件中,您可以实现

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

在内部,您可以使用机制来识别通知类型,并根据您可以使用NSNotificationCenter发布您自己的通知

[[NSNotificationCenter defaultCenter] postNotificationName:@"openMyView" object:nil userInfo:myInfoDic];

然后在通知观察者方法中,您可以对需要显示的UIViewController执行segue

[self performSegueWithIdentifier:@"toMySegue" sender:myDataDic];

您还必须在故事板中创建具有上述名称的segue。希望你已熟悉这个过程。