我有一个具有登录屏幕和启动画面的应用程序。我希望这些屏幕一个接一个地显示出来,因此我将它们作为子视图添加到app delegate的窗口属性中。
[window addSubview:mainViewController.view];
[window addSubview:loginViewController.view];
[window addSubview:splashScreenViewController.view];
问题是添加的每个后续子视图似乎都以奇怪的方式出现(不遵循nib文件的方向)。我知道我的nib文件没有错,因为如果我只包含一个视图,无论它是哪个视图,它都会显示正确。此外,如果我将视图作为子视图添加到主视图控制器的视图(而不是app delegates)视图,我不会遇到此问题。但是,屏幕底部有一个20px的间隙,因为我猜UIWindow会占据状态栏,而正常的UIView则不会。
有谁知道问题可能是什么? UIWindow正在做一些特别的事吗?我不应该向UIWindow添加几个子视图吗?如果有人有关于如何进行闪屏的提示,那将非常感激。
答案 0 :(得分:1)
我建议你在中间使用UIView ......
UIView view = [[UIView alloc] init];
[view addSubview:mainViewController.view];
[view addSubview:loginViewController.view];
[view addSubview:splashScreenViewController.view];
[window addSubview:view];
[view release];
如果您要设置为启动画面的动画,请看一下我的帖子: how to open a new uiview like a popup?
答案 1 :(得分:0)
一次只能有一个视图控制器。
答案 2 :(得分:0)
您应该使用 -(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
委托功能来检查单击了哪个选项卡。如果它是你的第二个视图(如果只有2个选项卡应该是它),那么在你的splashscreencontroller中调用一个弹出模态的自定义方法。如果该启动画面仅显示一次,请确保之后设置一个标记以确保它不会再次弹出。
TabBarController在显示之前加载所有视图,因此当用户在标签之间切换时没有延迟。