繁体   English   中英

避免在收到推送通知iOS时加载主ViewController

[英]Avoid loading main viewcontroller on receive of push notification ios

我在接收推送通知时使用以下代码来显示我的viewcontroller 它工作正常,但先加载主viewcontroller ,然后再加载viewcontroller 因此,每次用户收到通知时,他们都会看到两个viewcontrollers controller首先加载主viewcontrollers ,然后再加载通知controller

我如何避免这种情况? 从UI角度来看,加载两个视图控制器看起来不太好。

UIViewController *main=[[UIStoryboard storyboardWithName:@"Main" bundle:nil]  instantiateViewControllerWithIdentifier:@"main"];            
UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:main];
self.window.rootViewController =nil;
UIViewController *destCon = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"RelNoti"];
UINavigationController *desNevCont = [[UINavigationController alloc] initWithRootViewController:destCon];                       
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];
[self.window.rootViewController  presentViewController:desNevCont animated:YES completion:nil];

在这行中将动画设置为“否”,

[self.window.rootViewController  presentViewController:desNevCont animated:NO completion:nil];

您可以在检测到如下所示的推送通知时简单地更改应用程序的rootViewController,并避免视图之间的转换:

UIViewController *destCon = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"RelNoti"];
UINavigationController *desNevCont = [[UINavigationController alloc] initWithRootViewController:destCon];


self.window.rootViewController = desNevCont;
[self.window makeKeyAndVisible];

从下面的代码中,您似乎正在将mainViewController分配为rootViewController ,然后在其上方显示notificationViewController ,这就是创建两个视图的过渡。 因此,只需将您的代码限制为上述代码。

self.window.rootViewController = navigationController; // You are doing it here
[self.window makeKeyAndVisible];
[self.window.rootViewController  presentViewController:desNevCont animated:YES completion:nil]; // presenting here

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM