NSButton 状态不变

NSButton state not changing

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

@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 并单击它,它将保持打开状态。

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

        sender.state == NSOnState

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

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

sender.state = NSOnState

更新 Swift 4.2

sender.state = NSControl.StateValue.on

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

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

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

@IBOutlet weak var checkedButton: NSButton!

checkedButton.state = NSControl.StateValue.off // State = off

checkedButton.state = NSControl.StateValue.on  // State = on

我在 CollectionViewItem 中有这个... 我有一个 favouriteButton 插座...

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

我已将出口链接到 Collection View Item 对象

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

一旦我将它也链接到文件所有者,......一切都有效。