我有一个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;.............


一点都没有...

最佳答案

我在iOS 5.0上遇到了同样的问题。似乎直到5.0,您都可以从任何线程更新'progress'变量,但是必须从主线程调用setNeedsDisplay。从5.0开始,还必须设置主线程的“ progress”值。希望它能对任何人有帮助。

关于iphone - UIProgressView进度未更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3822794/

10-12 00:28
查看更多