0

我在我的 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
4

1 回答 1

0

问题是我的 init 方法,下载器实现中的以下内容修复了它:

- (id)init{
    self = [super init];

    if (self) {
        appdelegate = [[NSApplication sharedApplication] delegate];
    }

    return self;
}

这么多快速编码尝试一些东西,我觉得很傻......

于 2013-06-23T11:59:35.397 回答