如何使用Cocoa绑定使用NSProgress更新进度条?

时间:2014-04-07 22:47:57

标签: macos cocoa cocoa-bindings nsprogressindicator nsprogress

我一直在尝试使用新的NSProgress类来报告我的Mac应用中的操作进度。现在,它已作为我的App Delegate中的属性保存(并从不同的类和不同的队列更新),并且似乎已正确更新,正如记录[_currentProgress fractionCompleted]所证明的那样。

但是,当我尝试使用NSProgress对象更新进度条时出现问题。我已经设置了进度条,其绑定类似于:

Binding Screenshot

进度条似乎保留在我的null占位符上(通过将空占位符更改为' 1'来证明),而不是重绘或更新以适应任何进一步的进度。 currentProgress仅在操作开始时设置,这将是进度条首先使用空占位符的原因,但是当NSProgress对象设置为该属性时,它不会更新进度条。

如果有人可以帮助我在这里,那就太好了......(我必须做一些愚蠢的事情,我做错了!)

2 个答案:

答案 0 :(得分:1)

除非您另有说法,否则我将假设您使用的是一个不确定的进度条。

Cocoa NSProgressIndicator可能是不确定的,在这种情况下,它是一个理发店风格的swirly,无论是移动与否:

A picture of an indeterminate progress bar

或者,它们可以是确定的,在这种情况下,它是典型的从左到右擦除进度条:

A picture of a determinate progress bar

尝试取消选中不确定状态,并查看您的进度是否显示使用此设置:

Progress bar settings panel

答案 1 :(得分:0)

我认为问题是如果在后台队列上更新使用的NSProgress,则不能对fractionCompleted使用绑定。我现在正在自己实现这个组合,我没有通过像你这样的普通绑定来显示。如果我观察KVO - 观察它并设置条的doubleValue它就可以工作......只要我将它发送到主队列。