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