【问题标题】:NSButton tag ID returns inaccurate values past 7NSButton 标记 ID 返回超过 7 的不准确值
【发布时间】:2019-09-26 12:34:02
【问题描述】:

我有一个包含 25 个 NSButton 的网格。我正在尝试为它们中的每一个设置一个标签,从 1 到 25,并将它们链接到一个 IBAction,其中包含:

- (IBAction)buttonClicked:(id)sender {
    NSLog(@"Clicked button %lo.", [sender tag]);
}

但是,我遇到了问题。从按钮 1-7 可以正常工作,但第 8 个返回 10,第 9 个返回 11,第 10 个返回 12。我实验性地将按钮的标签设置为 88,它返回 130。这是一个错误,还是我要去关于这个错误的方式?

【问题讨论】:

  • 您确定从storyboardxib 正确设置了标签吗?

标签: macos cocoa osx-yosemite appkit


【解决方案1】:

您的按钮值是正确的,只是打印错误,采用八进制格式(%lo 中的“o”)而不是十进制。这就是为什么你的 8 打印为 10 —— 那是八进制表示的 8。 130 是八进制的 88 十进制:

【讨论】:

  • 我完全忘记了这个问题。但是,是的,现在回头看,我有几年的经验,这绝对是正确的答案。
【解决方案2】:

您应该使用unsigned int (%u) 格式,而不是long (%lo):

NSLog(@"Clicked button %u.", [sender tag]);
  • 根据标签的格式,您可能只使用%o。将整数视为 long 是对数字的加法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 2021-06-28
    • 2017-12-23
    • 1970-01-01
    相关资源
    最近更新 更多