NSButton 值为 1

Posted

技术标签:

【中文标题】NSButton 值为 1【英文标题】:NSButton values are 1 【发布时间】:2017-11-25 22:13:47 【问题描述】:

我想使用 NSButton 的 integerValue 在方法中传递信息,但遇到了一个奇怪的错误:无论我设置一个值 - 无论是 integerValue、stringValue 还是 floatValue,当我读出它时,它都是 1。

NSButton 继承自 NSControl 并且 应该 具有通常的值集...但所有这些值(包括字符串)都解析为 1。

我在 NSControl.h 或 NSButton.h 中看不到任何东西表明 xxValue 不是普通属性。

我正在使用 Xcode 9/Swift 4/macOS 10.12.6 - 这是一个已知问题吗?这在任何地方都有记录吗?我使用 .tag 作为解决方法,但不希望这样做。

【问题讨论】:

不要使用 control 的整数值来检索信息,这是非常糟糕的做法。 “无论我设置一个值是什么——无论是 integerValue、stringValue 还是 floatValue,当我读出它时,它都是 1。”没有人看到这一点,因为你没有展示任何一行工作。 @the4kman 我不打算这样做,但我需要一种快速的方法来跟踪我正在测试的东西中的发件人,并且动态更改按钮的标签似乎更更多 i> 从概念上讲是可疑的(但在帮助我追踪我的错误方面起到了作用。有时我只想要一个诊断有效负载)。一旦我偶然发现了一个奇怪的东西,我就会试着弄清楚它的来源以及我是如何发现的。 【参考方案1】:

这不是错误。

来自documentation of NSButton

对于大多数类型的按钮,按钮的值与其状态相匹配——值为 1 表示打开,0 表示关闭,或 -1 表示混合。对于压力感应按钮,按钮的值表示压力级别。

【讨论】:

谢谢 - 我知道我错过了一些东西,我就是想不通。我显然没有足够仔细地阅读介绍性文字。谜题解开了。

以上是关于NSButton 值为 1的主要内容,如果未能解决你的问题,请参考以下文章

Cocoa:当它在NSButton上时更改光标

旋转 NSButton 不起作用

在 C# MonoMac (NSButton, NSLabel) 中动态创建控件/对象

NSButton mouseDown mouseUp 在启用时表现不同

如何使用延迟的 NSMenu 创建 NSButton?

如果不是第一响应者,为啥我可以单击 NSButton?