我正在尝试设置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 {
}
}
答案 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。我把它移动了一点,所以它不再重叠了。
我不确定为什么会这样。它应该在原始案例中工作,但这就是我解决它的方式。