【发布时间】:2015-01-19 09:32:12
【问题描述】:
我在计算 UIProgressView 的进度时遇到问题。我的浮点值对进度没有影响。我尝试手动设置进度,它工作正常,但如果我尝试计算它就不起作用。
这是我的代码:
- (void) initProgressbar {
self.progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
[self.progressView setFrame:CGRectMake(0, 0, SCREEN_WIDTH / 2, 10)];
self.progressView.center = CGPointMake(SCREEN_WIDTH - 110, SCREEN_HEIGHT - 25);
self.progressView.progress = 0.0;
[self.view addSubview:self.progressView];
}
nbElementsSync 和 nbElementsToSync 是全局 int 属性,nbElementsSync 在调用 updateProgress 方法之前通过循环递增。
MyController.h
@interface MyController : UIViewController {
NSString *json;
int nbElementsToSync;
int nbElementsSync;
}
@property (nonatomic, strong) UIProgressView *progressView;
MyController.m
nbElementsSync = 0; // Nb elements synchronized
nbElementsToSync = [[json valueForKey:@"count"] intValue]; // Nb elements to synchronize
for (NSString* result in results) {
nbElementsSync++;
[self updateProgress];
}
这是我设置进度的方法:
- (void) updateProgress {
[self.progressView setProgress:((float)nbElementsSync / nbElementsToSync)];
NSLog(@"percent : %f", ((float)nbElementsSync / nbElementsToSync));
}
我的 NSLog 的结果:
percent : 0.003937
percent : 0.007874
percent : 0.011811
percent : 0.015748
percent : 0.019685
percent : 0.023622
...
有什么办法解决吗?提前致谢。
【问题讨论】:
-
你能展示你在循环中实现的代码吗?nbElementsToSync 是否随时间变化?
-
那么你从中得到了什么?确保您的数组“结果”计数与您的“nbElementsToSync”相同
-
你确定你没有在另一个线程上调用 updateProgress 吗?您只能从主线程更新 UI。尝试记录它,如果它为零,那么这是一个问题 NSLog(@"%@", @([NSThread isMainThread]))
-
NSLog(@"%@", @([NSThread isMainThread])) 总是返回 1
标签: ios objective-c progress uiprogressview