【发布时间】:2013-12-03 16:36:06
【问题描述】:
我已经在我的应用中实现了本地通知,但我想选择在用户“滑动”通知时显示哪个视图控制器。我的应用是几个视图控制器,它们之间有基本的 segue 导航。
如何选择查看哪个视图控制器?
【问题讨论】:
标签: ios objective-c uiviewcontroller uilocalnotification
我已经在我的应用中实现了本地通知,但我想选择在用户“滑动”通知时显示哪个视图控制器。我的应用是几个视图控制器,它们之间有基本的 segue 导航。
如何选择查看哪个视图控制器?
【问题讨论】:
标签: ios objective-c uiviewcontroller uilocalnotification
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
[[UIApplication sharedApplication] cancelLocalNotification:notification];
//My_specificViewController
RingingViewController *ringingVC = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"RingingViewController"];
[self.window setRootViewController:ringingVC];
}
【讨论】:
您可以在 application:didFinishLaunchingWithOptions 方法中处理本地通知,然后您可以选择正确的视图控制器:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Handle notification
UILocalNotification *localNotif =
[launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
UIViewController *vc = nil
if (localNotif) {
//base on notification create right view controller
vc = [[VC alloc] init];
NSLog(@"Recieved Notification %@",localNotif);
}
else
{
//create default view controller
vc = [[VC alloc] init];
}
// Add the view controller's view to the window and display.
_window.rootViewController = vc;
[_window makeKeyAndVisible];
return YES;
}
【讨论】:
Greg 给了你大部分答案,但请注意,除了 didFinishLaunchingWithOptions 之外,你还需要添加一个 application:didReceiveLocalNotification: 方法。一旦您的应用程序运行,该方法就会被调用。我建议将处理本地通知的代码提取到一个方法中并从两个地方调用它。
【讨论】: