做一个需求,想要在app从后台唤醒的时候不显示进入后台的页面,要显示登录页面,于是就在
- (void)applicationDidEnterBackground:(UIApplication *)application里面写了下面的代码
LoginViewController* ctrl = [[LoginViewController alloc] init];
[Nav pushViewController:unlockLocusView animated:NO];
这么写虽然可以达到想要的效果,但是有个问题,假定进入后台的时候显示的画面是A,唤醒的时候,A画面回先显示一下,然后再跳转到登录画面,有没有什么办法在不让A画面显示出来

解决方案 »

  1.   

    在- (void)applicationDidBecomeActive:(UIApplication *)application{}这个函数里面实现一下是不是能解决呢
      

  2.   

    root中addsubview个uiview应该就没有问题
      

  3.   


    [self.window.rootViewController.view addSubview:view];这样?效果是一样的
      

  4.   

    在 applicationDidEnterBackground 中加 ,我可以的
    你的LoginViewController是不是透明的,把背景色设成不透明试试
    [self.view setBackgroundColor:];
      

  5.   


    我把- (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页面,然后才会显示一个全是绿色的页面
      

  6.   

    按理说在applicationDidEnterBackground时,LoginViewController已经被显示了啊,不会在唤醒时会显示其他画面啊,除非你在唤醒代码中做了操作显示其他画面,你debug一下,看看你的a页面是不是在唤醒时被WillAppear过
      

  7.   


    debug过的,根本就没有跑过A的WillAppear,但是A还是会闪一下
      

  8.   

    登录,应该是在进入后台时显示的视图控制器的重载方法里来实现!每次该视图控制器的视图被重新显示的时侯,都检查一下是否需要重新登录,如果是的话,就push到登录界面,不使用动画,这样就应该可以了。
    以上说明有两个要点:
    一是需要重新登录的验证机制;
    二是转到登录界面时,不要使用动画效果,这样瞬间跳过去,就看不到了,即使在较慢的设备上看到一点,也属正常逻辑,用户感觉上来说也是符合常情的!
      

  9.   

    登录视图使用present方式更合适
    [self.window.rootViewController presentViewController:logVC animated:NO];
      

  10.   

    网址行吗http://edu.51cto.com/course/course_id-779.html