iOS Root View Controller的viewDidAppear:在屏幕上仍然显示启动画面(Default.png)时调用

时间:2011-04-29 09:15:13

标签: iphone uiviewcontroller splash-screen viewdidload viewdidappear

在我的iOS应用程序中,我希望在屏幕上显示后,在我的Root View Controller中运行一系列操作。但是,似乎iOS应用程序正在调用viewDidAppear,而启动屏幕(即显示Default.png图像)仍在屏幕上,并且在根视图控制器布局在屏幕上之前。我也在viewDidLoad中尝试了相同的代码,并遇到了同样的问题。如果根视图控制器实际上在屏幕上,我怎么强制代码才能运行?

2 个答案:

答案 0 :(得分:2)

在viewdidload中使用此

[self performSelector:@selector(loadData) withObject:nil afterDelay:.5];

然后在loaddata方法中使用你的代码...

答案 1 :(得分:2)

我自己刚遇到一个非常类似的问题,其中我想在加载根视图控制器后显示模态登录视图。我以前一直在使用viewDidAppear,但是当我升级到iOS 4.3 SDK时,行为就破裂了。

我通过从应用委托的application:didFinishLaunchingWithOptions:选择器调用我的根视图控制器上的选择器来修复它。在另一个答案中使用延迟有点像kludge,可能并不完全可靠。

yourAppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    // Add the view controller's view to the window and display.
    [self.window addSubview:viewController.view];
    [self.window makeKeyAndVisible];

    // Invoke operations here. For example, show login view:
    [viewController showModalLoginView];

    return YES;
}