我正在做一个应用程序。因为我有一些视图控制器,如A-> B,A-> C,A-> D和B-> E,C-> F,D- > G和E-> H,F-> I和G-> J.So我在E视图控制器中,每当通知到来时,我必须移动到G视图控制器。如果我在任何视图中控制器除了G,我需要移动到G视图控制器。所以请告诉我该怎么做。
答案 0 :(得分:1)
您需要先在AppDelegate.m中设置一些代码,以便在应用程序打开时响应推送:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
//If opening app from notification
if ( application.applicationState == UIApplicationStateInactive || application.applicationState == UIApplicationStateBackground )
{
//restore push
[[NSNotificationCenter defaultCenter] postNotificationName:@"appRestorePush" object:nil];
}
//If app is already open
else {
[[NSNotificationCenter defaultCenter] postNotificationName:@"appOpenPush" object:nil];
}
}
如果应用程序通过推送打开(即您从锁定屏幕上滑动),我们会触发NSNotification,并且如果应用程序已经打开,还会有不同的通知。您不必使用两种不同类型的NSNotification,但它可能对您有用。我不确定你的视图控制器设置是什么,但假设你在根控制器中使用UINavigation控制器,你只需将它设置为在ViewDidLoad中监听,即:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appOpenPush) name:@"appOpenPush" object:nil];
在方法中你可以这样调用:
-(void)appOpenPush {
NSLog(@"got a push while app was open");
//Get the view controller
UIViewController *lastViewController = [[self.navigationController viewControllers] lastObject];
if([lastViewController isKindOfClass:[MyViewController class]]) {
//do your segue here
}
else if//////do this for all your cases...
}
这里我们检查视图控制器是什么类型的类,然后选择适当的segue。
希望你至少做了一点工作并理解我写的东西..