当用户点按推送通知时,关闭当前UIViewController
并打开新UIViewController
的最佳方式是什么?
例如,
A(基础UIViewController
)打开B(UIViewController
)并打开C(UIViewController
)
并使用点击主页按钮,因此应用程序将进入后台,
之后当用户收到推送通知并点击它时,
app将进入前台。
我要关闭B,C UIViewController
(可能是否打开C控制器),然后打开D(UIViewController
)
你能给我一些提示吗?
答案 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。希望你已熟悉这个过程。