在iPhone上创建自定义加载屏幕

时间:2010-10-22 09:58:41

标签: objective-c ios4

我想创建一个View / Window,在我的应用程序中执行一些初始加载。我试过这样的事情:

StartWindow *start = [[StartWindow alloc] initWithNibName:@"Start" bundle:nil];

self.startWindow = start;

[start release];

[window addSubview:startWindow.view];

暂时在viewDidLoad内的StartWindow事件中我只有[NSThread sleepForTimeInterval:3.0];来模拟我的加载。

问题我的视图直到 线程结束后才会显示。 为什么?

修改

以上代码位于didFinishLaunchingWithOptions内。

2 个答案:

答案 0 :(得分:1)

问题是您阻止了主线程,因此操作系统无法刷新窗口并显示新视图。 您可以尝试在第二个线程中执行加载,或者,如果您需要调用许多非线程安全函数,您可以通过NSTimer在很短的时间后开始加载,以便操作系统有时间刷新窗口

另一种方法是在viewDidAppear:中执行加载,在显示视图时调用该加载,而在从nib文件加载视图时调用viewDidLoad。

答案 1 :(得分:1)

因为框架正在等待您在viewDidLoad中完成初始化视图。如果要在后台进行加载,则必须使用某种后台处理工具,如单独的线程或NSOperationQueue。

BTW,sleepForTimInterval实际上并不在单独的线程中运行。它使调用线程处于休眠状态(在本例中为主UI线程)。