Obj-C
或MonoTouch C#
的答案是罚款。
最初的UIWindow的RootViewController的是一个简单的登录屏幕。
window.RootViewController = loginScreen;
登录后,我的根设定为主要的应用程序
window.RootViewController = theAppScreen;
如何淡入过渡在这种情况下两个RootViewControllers之间?
Obj-C
或MonoTouch C#
的答案是罚款。
最初的UIWindow的RootViewController的是一个简单的登录屏幕。
window.RootViewController = loginScreen;
登录后,我的根设定为主要的应用程序
window.RootViewController = theAppScreen;
如何淡入过渡在这种情况下两个RootViewControllers之间?
我可能会建议不同的方法,将让你动画。 只要进入theAppScreen
控制器首先 ,如果你需要用户登录,有它做presentViewController
去的loginScreen
(你不必动画这一步,如果你想让它看起来像它去直接登录屏幕)。 这样,当你已经成功登录,loginScreen可以只dismissViewControllerAnimated
和你有你的动画回到主theAppScreen
。 (当然,如果你想淡入淡出效果,不要忘记设置控制器modalTransitionStyle
到UIModalTransitionStyleCrossDissolve
。)
如果你在改变你死心塌地rootViewController
,我能想到这样做(我不喜欢它)的唯一方法是做这样的事情:
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;
}];
第一种方法似乎更清洁了我。
这是@Robert瑞安的技术MT代码(虽然我与他的建议,同意theAppScreen
可能是“正确的” RootViewController
):
void DissolveIn (UIWindow window, UIViewController newController)
{
newController.ModalTransitionStyle = UIModalTransitionStyle.CrossDissolve;
window.RootViewController.PresentViewController (newController, true, () =>
{
window.RootViewController.DismissViewController (false, null);
window.RootViewController = newController;
});
}
你可以这样做:
window.RootViewController = theAppScreen;
loginScreen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[theAppScreen presentModalViewController:loginScreen animated:NO];
完成后loginScreen可以关闭本身: [self dismissModalViewControllerAnimated:YES];
第一个动画的NO将使loginScreen出现不theAppScreen它下的任何知名度。 动画= YES上完成将提供横溶解。