Состояние NSButton не меняется

Следующий код прекрасно работает в моей песочнице:

@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, он останется включенным.

К сожалению, в моем приложении, где мне действительно нужно это не работает. Я проверил, что в песочнице и приложении prod привязки / настройки одинаковы для обеих кнопок. Отладчик показывает, что

        sender.state == NSOnState

просто не выполняется. state остается NSOffState, Грызть клавиатуру не помогло. Любая идея?

4 ответа

Решение

Вы не назначаете никакого значения состоянию кнопки.

sender.state = NSOnState

Изменение состояния переключателя (проверка состояния) для быстрой 4:

@IBOutlet weak var checkedButton: NSButton!

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

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

Я знаю, что на этот вопрос уже есть принятый ответ, но я делюсь своим сценарием на случай, если кто-то споткнется

У меня была та же проблема, когда я не мог программно установить состояние для моей кнопки в пользовательской ячейке табличного представления. Моя проблема в том, что я пытался установить состояние, когда моя таблица впервые создала ячейку. Вместо этого я должен был переопределить метод макета в своей пользовательской ячейке и установить там состояние.

У меня было это в CollectionViewItem... У меня был выход для любимой кнопки...

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

Я связал розетку с объектом Collection View Item.

но НЕ связал его с владельцем файла...

Как только я связал его с владельцем файла, ... все заработало.

Другие вопросы по тегам