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

《iOS Human Interface Guidelines》——Container View Controller

将数据从 Table View Cell 传递到 IOS 中的 View Controller