2012-03-28 47 views

回答

2

你不能。 需要先启动应用程序,然后才能显示任何动态内容。 加载第一个ViewController后,当然可以显示进度条并加载。 在此之前,您只能显示静态图像Default.png & [email protected]。 如果您在完成-[ViewController viewDidLoad]-方法结束后将重负载延迟,则可以在执行繁重工作时显示任何种类的GUI。

编辑: 这个例子将分离你的viewDidLoad中一个新的线程,并做一些繁重的工作(在这种情况下,睡眠1秒)和更新UIProgressView和日志的进展,因为它睡10次,递增与0.1 progressview每一次。

- (void)viewDidLoad 
{ 
// ..... 
    [NSThread detachNewThreadSelector:@selector(workerBee) toTarget:self withObject:nil]; 
} 

- (void)workerBee 
{ 
    NSAutoreleasePool* workerPool = [[NSAutoreleasePool alloc] init]; 

    // Put your image loading between this line and [workerpool release] 

    for (float i = 0; i<1; i+= 0.1) 
    { 
     [self performSelectorInBackground:@selector(updateProgress:) withObject:[NSNumber numberWithFloat:i]]; 
     sleep(1000); 
    } 
    [workerPool release]; 
} 

- (void)updateProgress:(NSNumber*)number 
{ 
    NSLog("Progress is now: %@", number); 
    [progressView setProgress:[number floatValue]]; 
} 
+0

是否有理由选择将进度条作为后台线程而不是睡眠/繁重工作?我会猜想它会更好一些 – bkbeachlabs 2014-01-21 18:53:53

0

在第一个屏幕中放置一个加载条,并在显示它后在另一个线程中启动您的计算繁重的代码。

+0

什么是第一个屏幕?我是否在viewDidLoad motod中初始化它? – William 2012-03-28 08:04:04

+0

第一个屏幕是作为app应用程序委托中'application:didFinishLaunchingWithOptions:'方法中'UIWindow'子视图添加的屏幕。其余的你可以检查@ sveinungkb的答案。 – Alexander 2012-03-28 08:09:18

+0

我使用启动图像功能显示静态图像Default.png。我可以将加载栏放在应用程序中:didFinishLaunchingWithOptions:方法吗?我尝试,但我看不到酒吧?我怎么能把它改成静态默认图片的顶部? – William 2012-03-28 08:33:29

相关问题