iPhone: Fade transition between two RootViewControllers
ios, iphone, transition, xamarin.ios
Solution
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.
Problem
`Obj-C` or `MonoTouch C#` answers are fine. The initial UIWindow's RootViewController is a simple login screen. ``` window.RootViewController = loginScreen; ``` After login, I set the Root to the main app ``` window.RootViewController = theAppScreen; ``` How do I Fade-transition between the two RootViewControllers in this instance?