iOS Root View Controller 的 viewDidAppear:在启动画面 (Default.png) 仍在屏幕上时调用
Posted
技术标签:
【中文标题】iOS Root View Controller 的 viewDidAppear:在启动画面 (Default.png) 仍在屏幕上时调用【英文标题】:iOS Root View Controller's viewDidAppear: called while splash screen (Default.png) still on screen 【发布时间】:2011-04-29 09:15:12 【问题描述】:在我的 ios 应用程序中,我想在我的根视图控制器中运行一系列操作,之后它已经出现在屏幕上。但是,iOS 应用程序似乎正在调用 viewDidAppear,而初始屏幕(即显示 Default.png 图像)仍在屏幕上并且在屏幕上布置根视图控制器之前。我也在 viewDidLoad 中尝试过相同的代码,并且遇到了同样的问题。如何强制代码仅在根视图控制器实际出现在屏幕上时才运行?
【问题讨论】:
【参考方案1】:在viewdidload中使用这个
[self performSelector:@selector(loadData) withObject:nil afterDelay:.5];
然后在 loaddata 方法中使用您的代码...
【讨论】:
【参考方案2】:我自己也遇到了一个非常相似的问题,我想在我的根视图控制器加载后显示一个模式登录视图。我之前一直在使用viewDidAppear
,但是当我升级到 iOS 4.3 SDK 时,这种行为就中断了。
我通过从应用委托的application:didFinishLaunchingWithOptions:
选择器调用我的根视图控制器上的选择器来修复它。在另一个答案中使用延迟有点麻烦,而且可能并不完全可靠。
在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;
【讨论】:
以上是关于iOS Root View Controller 的 viewDidAppear:在启动画面 (Default.png) 仍在屏幕上时调用的主要内容,如果未能解决你的问题,请参考以下文章
iOS Container View Controller小小的研究
《iOS Human Interface Guidelines》——Container View Controller
《iOS Human Interface Guidelines》——Page View Controller
《iOS Human Interface Guidelines》——Split View Controller