iPhone: Fade transition between two RootViewControllers

后端 未结 3 3979
北海茫月
北海茫月 2021-02-20 19:07

Obj-C or MonoTouch C# answers are fine.

The initial UIWindow\'s RootViewController is a simple login screen.

window.RootViewCon         


        
3条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2021-02-20 19:42

    I might suggest a different approach that will get you your animation. Just go to the theAppScreen controller first, and if you need the user to log in, have it do the presentViewController to get to the loginScreen (you don't have to animate this step if you want it look like it went directly to the login screen). That way, when you've successfully logged in, the loginScreen can just dismissViewControllerAnimated and you've got your animation back to the main theAppScreen. (Obviously, if you want the fade effect, don't forget to set the controller's modalTransitionStyle to UIModalTransitionStyleCrossDissolve.)

    If you're dead set on changing your rootViewController, the only way I can think of doing it (and I don't like it) would be to do something like:

    MainAppViewController *controller = [[MainAppViewController alloc] initWithNibName:@"MainAppViewController" bundle:nil];
    
    // animate the modal presentation
    
    controller.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    
    [self.window.rootViewController presentViewController:controller 
                                                 animated:YES
                                               completion:^{
    
        // and then get rid of it as a modal
    
        [controller dismissViewControllerAnimated:NO completion:nil];
    
        // and set it as your rootview controller
    
        self.window.rootViewController = controller;
    }];
    

    The first technique seems much cleaner to me.

提交回复
热议问题