gpt4 book ai didi

cocoa - NSLevelIndicator 未更新

转载 作者:行者123 更新时间:2023-12-03 17:00:19 24 4
gpt4 key购买 nike

我有一个带有 NSLevelIndicator 对象的应用程序,该对象拒绝更新。

我有一个在 init 期间关闭的计时器,并使用其 setIntValue 方法更新 NSLevelIndicator 的值。虽然代码执行时没有任何异常,但 NSLevelIndicator 永远不会在视觉上更新。我在窗口上还有一些其他标签通过此计时器进行更新,因此我知道它正在执行。

我尝试使用所有 setTypeValue 方法(字符串、直接值和 double 值,并在每个方法中分配适当的变量)。我什至尝试通过界面生成器将“setStringValue”操作从 NSLevelIndicator 链接到窗口上的标签表示,但无济于事。它仍然保持其初始值 (0)。

我注意到 setIntValue(以及所有其他 setTypeValue 方法)在 Apple 的 NSLevelIndicator 文档中没有记录 - 所以我想知道我是否在处理这个问题。

有人知道从代码中设置 NSLevelIndicator 值的正确方法是什么吗?

最佳答案

setIntValue 应该可以工作,所以听起来 NSLevelIndicator 的 IBOutlet 设置不正确 - 很可能它的值为零。

这可能是由于您的 socket 未按照 Johan Kool 的建议连接到 IB 中。

但是,值得一提的是,IBOutlet 在调用初始化程序时还没有有效值 - 它们在初始化程序返回后连接,并且在您的实例收到 awakeFromNib消息。

您提到您的计时器是从初始化程序设置的 - 如果您碰巧将实例的 NSLevelIndicator 指针作为其 userInfo 参数传递给计时器,则 userInfo 将具有错误的值(nil),因为它尚未初始化计时器已创建。

无论您是否以这种方式使用 userInfo,任何依赖于 IBOutlet 值的内容都应该从 awakeFromNib 内部设置,而不是 init

关于cocoa - NSLevelIndicator 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2394323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com