我有一些 Cocoa UI 元素,其出口连接到在 NSView 对象中实例化的对象,而该对象又由 NSViewController 放在那里。这些元素,一个明确的进度条和一个文本标签,没有更新:进度条是死的和空的,尽管它的值不断变化,文本标签不会通过 [textLabel setHidden:NO] 取消隐藏,文本标签不会改变它的字符串。
我知道的:
- 绑定值和在代码中设置它们之间没有区别。两种方式都没有改变。
- 我检查了插座连接。他们都在那里。
- 我试过 [X displayIfNeeded],其中 X 是 UI 对象本身、包含 NSView 和主窗口。没有不同。
- [progressBar setUsesThreadedAnimation:YES] 没有区别。有趣的是,如果我在程序中查看progressBar,_threadedAnimation 仍然是NO。
- 拥有所有这些出口并执行导入操作的对象位于 NSViewController 对象拥有的 NSOperationQueue 中。
谢谢!
编辑:按照建议,我调用了 [self performSelectorOnMainThread:@selector(updateProgress:) withObject:[NSNumber numberWithInt:myObject] waitUntilDone:NO]。(我也试过 waitUntilDone:YES。)它仍然没有更新。调试器清楚地显示 updateProgress: 发生在主线程中,所以我不知道缺少什么。