做一个需求,想要在app从后台唤醒的时候不显示进入后台的页面,要显示登录页面,于是就在
- (void)applicationDidEnterBackground:(UIApplication *)application里面写了下面的代码
LoginViewController* ctrl = [[LoginViewController alloc] init];
[Nav pushViewController:unlockLocusView animated:NO];
这么写虽然可以达到想要的效果,但是有个问题,假定进入后台的时候显示的画面是A,唤醒的时候,A画面回先显示一下,然后再跳转到登录画面,有没有什么办法在不让A画面显示出来
- (void)applicationDidEnterBackground:(UIApplication *)application里面写了下面的代码
LoginViewController* ctrl = [[LoginViewController alloc] init];
[Nav pushViewController:unlockLocusView animated:NO];
这么写虽然可以达到想要的效果,但是有个问题,假定进入后台的时候显示的画面是A,唤醒的时候,A画面回先显示一下,然后再跳转到登录画面,有没有什么办法在不让A画面显示出来
[self.window.rootViewController.view addSubview:view];这样?效果是一样的
你的LoginViewController是不是透明的,把背景色设成不透明试试
[self.view setBackgroundColor:];
我把- (void)viewDidLoad和-(void)viewWillAppear:(BOOL)animated里面的代码全删了,写成
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view setBackgroundColor:[UIColor redColor]];
}-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.view setBackgroundColor:[UIColor greenColor]];
}
跑下来,还是会先显示A页面,然后才会显示一个全是绿色的页面
debug过的,根本就没有跑过A的WillAppear,但是A还是会闪一下
以上说明有两个要点:
一是需要重新登录的验证机制;
二是转到登录界面时,不要使用动画效果,这样瞬间跳过去,就看不到了,即使在较慢的设备上看到一点,也属正常逻辑,用户感觉上来说也是符合常情的!
[self.window.rootViewController presentViewController:logVC animated:NO];