我在我的 xcode 项目(Mac OS X,而不是 iOS)中使用 NSProgressIndicator。我正在尝试对文件进行异步下载,同时在进度指示器上显示下载进度。在我的项目中,单击更新按钮开始下载。每次接收到数据后,都会更新进度,并调用 app 委托中的 update_progress 方法。
从 NSLogs 可以看出,进度值被传递给该方法。在具有此值的进度指示器上使用 setDoubleValue 无效。但是,使用静态值(例如 setDoubleValue:50.0f)确实会更新进度指示器。
在 .m 中,loadData 方法开始下载。在这里你可以设置保存文件的位置(self.strFileNameWithPath),下面几行,下载文件的位置。我只是使用一个 2.5mb 的文件,很小,但足够大,可以进行几个下载步骤。
在界面中,点击“更新”按钮开始下载。当收到块时,控制台将显示进度更新。
有人知道为什么会发生这种情况,以及我该如何解决吗?提前致谢!
编辑:不一致的方法是:
- (void)update_progress:(float)value{
double thevalue = (double)value;
NSLog(@"value: %f",thevalue);
[self.progress_indicator setDoubleValue:thevalue];
NSLog(@"Prgoress: %f",[self.progress_indicator doubleValue]);
}
在每个进度步骤中, value 显示正确的进度值,但进度指示器没有对 setDoubleValue 做出反应,因为第二个 NSLog 返回 0.0。
以下是控制台显示的内容:
value: 2.770802
Prgoress: 0.000000
value: 22.662386
Prgoress: 0.000000
value: 69.881004
Prgoress: 0.000000