【发布时间】:2011-02-10 00:42:39
【问题描述】:
我有一个以加载多个导航控制器的 tableview(来自 xib)开头的应用程序。如果正在进行长时间的初始化序列,我想在启动时显示模式视图。我尝试在 App Delegate 中呈现模式视图,但直到底层代码已经完成之后,视图才会出现。
MainWindow.xib 加载 TableViewController,所以我在该视图中调用 presentmodalview 会出现相同的结果。我有很多 NSLOG 调用,所以我可以观察正在发生的事情,但我无法弄清楚为什么视图在应用程序委托和 tableview 控制器的 viewWillAppear 完成之后才会出现。我将调用移至 viewDidAppear,结果相同。这是一个代码sn-p:
应用代理:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Add the tab bar controller's current view as a subview of the window
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
[[UIApplication sharedApplication] setStatusBarHidden:NO];
// if new version being installed do init stuff
if ( <needs update code here>) {
Uncompress *uncompressView = [[Uncompress alloc] initWithNibName:@"Uncompress" bundle:nil];
[self.tabBarController presentModalViewController:uncompressView animated:NO];
[uncompressView release];
}
}
我还尝试将presentmodalviewcontroller 更改为[window addSubview:uncompressView.view],但没有任何运气。
更新代码运行得很好,问题是视图直到 AppDelegate 和 TableView 都完成后才会出现。我没有以编程方式创建任何视图——所有视图都来自 Xib。我不知道在哪里调用更新函数来让视图立即出现。任何帮助表示赞赏。谢谢!
【问题讨论】:
-
Uncompress中发生了什么,特别是它的初始化程序和viewDidLoad?
标签: iphone cocoa-touch delegates modalviewcontroller