我将一个UIProgressView添加到self.view作为子视图。我有一个加载行的UITableView。 我需要每一行中的图像,但我不希望应用程序等待所有这些,所以我决定运行NSThread并加载图像进程。当我尝试从我的线程内部更新UIProgressView的进度时 - 它没有得到更新。 我可能需要实施一些代表吗?
初始化
progressView = [[[UIProgressView alloc] initWithFrame:CGRectZero] autorelease];
[progressView setFrame:CGRectOffset(CGRectMake(0, 0, 320, 8), 0, 1)];
[self.view addSubview:progressView];
然后我运行我的线程
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[progressView setProgress:0.0];
NSThread *myThread = [[NSThread alloc] initWithTarget:self
selector:@selector(imageLazyLoading)
object:nil];
[myThread start];
[pool release];
[myThread release];
然后我尝试更新它
CGFloat pr;
for(int i=0; i < [self.itemsToDisplay count]; i++){
if (!runThread) {
return;
}
pr = (CGFloat)i/(CGFloat)[self.itemsToDisplay count];
[self performSelectorOnMainThread:@selector(updateProgressBar:)
withObject: [NSNumber numberWithFloat:pr]
waitUntilDone: YES];
progressView.progress += 0.5;.............
什么都没有......
答案 0 :(得分:0)
iOS 5.0也遇到了同样的问题。似乎直到5.0,您可以从任何线程更新'progress'变量,但必须从主线程调用setNeedsDisplay。从5.0开始,您还必须从主线程设置'progress'值。希望它可以帮助任何人。
答案 1 :(得分:0)
您需要做的就是更新主线程上的Progressview
。这是关于它的文章。
http://www.xprogress.com/post-36-threading-tutorial-using-nsthread-in-iphone-sdk-objective-c/