【问题标题】:NSButton state not changingNSButton 状态不变
【发布时间】:2015-03-26 11:53:31
【问题描述】:

以下代码在我的沙箱中完美运行:

@IBAction func filterClicked(sender: NSButton) {
  println(sender.state)
  if let clickEvent = NSApp.currentEvent! {
    if Int(clickEvent.modifierFlags.rawValue) & Int(NSEventModifierFlags.ControlKeyMask.rawValue) != 0 {
      if sender.state == NSOffState {
        sender.state == NSOnState
      }
    }
  }
  println(sender.state)
}

连接的按钮是一个开关按钮。因此,当它打开时,我按住 ctrl 键单击它会保持打开状态。

不幸的是,在我真正需要它的应用程序中,它不起作用。我检查了在沙盒和产品应用程序中,两个按钮的绑定/设置是相同的。调试器显示

        sender.state == NSOnState

根本不执行。 state 保持 NSOffState。啃我的键盘并没有帮助。有什么想法吗?

【问题讨论】:

    标签: swift nsbutton


    【解决方案1】:

    您没有为按钮状态分配任何值。

    sender.state = NSOnState
    

    Swift 4.2 更新

    sender.state = NSControl.StateValue.on
    

    【讨论】:

    • 天啊!我将它作为错误报告发送,在这种情况下编译器应该发出警告。非常感谢!
    【解决方案2】:

    为 swift 4 更改单选按钮的状态(检查状态):

    @IBOutlet weak var checkedButton: NSButton!
    
    checkedButton.state = NSControl.StateValue.off // State = off
    
    checkedButton.state = NSControl.StateValue.on  // State = on
    

    【讨论】:

    • 他们比内衣更频繁地改变语法:-/
    【解决方案3】:

    我知道这已经有一个公认的答案,但分享我的场景以防它绊倒其他人:

    我遇到了同样的问题,我无法在自定义表格视图单元格中以编程方式设置按钮的状态。我的问题是,当我的表格首次创建单元格时,我试图设置状态。相反,我必须确保覆盖自定义单元格中的布局方法并在那里设置状态。

    【讨论】:

      【解决方案4】:

      我在 CollectionViewItem 中有这个... 我有一个 favouriteButton 的出口...

      class PictureCollectionViewItem: XCollectionViewItem
      {
          @IBOutlet var thumbnailView: NSImageView!
          @IBOutlet var tagsView: NSTextField!
          @IBOutlet var favouriteButton: NSButton!
          ... 
      }
      

      我已将插座链接到 Collection View Item 对象

      但未将其链接到文件的所有者...

      只要我将它也链接到文件的所有者,......一切都奏效了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-01
        • 1970-01-01
        相关资源
        最近更新 更多