我的应用程序加载其资源时,UIProgressView不会更新

时间:2009-08-07 02:40:22

标签: uiview uiprogressview

我正在尝试在长资源加载过程中更新UIViewressView进度条。假设我正在从NIB文件中加载一堆位图(可能是一百个)。加载10后,我向UIProgressView发出一个.progress,它是已经显示的UIView的一部分。所以,我发出:

myView.myProgressView.progress=0.2;

然后,我加载另外10个位图,然后发出:

myView.myProgressView.progress=0.4;

等等。当应用程序运行时,进度条不会前进。它只是停留在初始位置。听起来像是一个完整的白痴,我是否必须在单独的线程上加载我的资源,以便操作系统可以更新UI,或者,有更简单的方法吗?感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

是。将它们加载到单独的线程上。或者只使用performSelector

之类的内容
[self performSelector:@selector(setProgressBar) withObject:nil afterDelay:0.0];

(并创建一个setProgressBar函数,从成员变量中读取当前值并更新UI)

答案 1 :(得分:0)

每次更新UI后,您都可以运行runloop的一步:

SInt32 result;
do {
    result = CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, TRUE);
} while(result == kCFRunLoopRunHandledSource);

它可能会产生其他不良后果(例如,允许用户与UI交互,在执行之前执行视图控制器的委托,例如viewDidAppear等),所以要非常非常小心。