为什么UIProgressView不更新?

时间:2013-01-04 10:09:49

标签: ios xcode uiprogressview

我正在尝试设置UIProgressView的进度,但progressView没有“更新”。 为什么?你知道我做错了吗?

这是我在ViewController.h中的代码:

    IBOutlet UIProgressView *progressBar;

这是ViewController.m中的代码:

- (void)viewDidLoad
{
[super viewDidLoad];

progressBar.progress = 0.0;

[self performSelectorOnMainThread:@selector(progressUpdate) withObject:nil waitUntilDone:NO];


}

-(void)progressUpdate {

float actual = [progressBar progress];
if (actual < 1) {
    progressBar.progress = actual + 0.1;
    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self `selector:@selector(progressUpdate) userInfo:nil repeats:NO];`
}
else {

}

}

4 个答案:

答案 0 :(得分:2)

尝试拨打[progressBar setProgress:<value> animated:YES];而不是progressBar.progress = <value>

编辑:看看这个,看起来很像你的例子:Objective c : How to set time and progress of uiprogressview dynamically?

答案 1 :(得分:1)

仔细检查在Interface Builder中是否正确链接了progressBar。

如果仍然无效,请尝试使用[progressBar setProgress:0];[progressBar setProgress:actual+0.1];

还要知道UIProgressView有一个[progressBar setProgress:<value> animated:YES];方法。可能看起来更干净。

答案 2 :(得分:1)

它应该是这样的:

- (void)viewDidLoad
{
    [super viewDidLoad];
    progressBar.progress = 0.0;
    [self performSelectorInBackground:@selector(progressUpdate) withObject:nil];
}

-(void)progressUpdate {
    for(int i = 0; i<100; i++){
        [self performSelectorOnMainThread:@selector(setProgress:) withObject:[NSNumber numberWithFloat:(1/(float)i)] waitUntilDone:YES];   
    }
}

- (void)setProgress:(NSNumber *)number
{
   [progressBar setProgress:number.floatValue animated:YES];
}

答案 3 :(得分:0)

今天早上我遇到了同样的问题。似乎progressBar部分超过了UITableView。我把它移动了一点,所以它不再重叠了。

我不确定为什么会这样。它应该在原始案例中工作,但这就是我解决它的方式。