Состояние 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.
но НЕ связал его с владельцем файла...
Как только я связал его с владельцем файла, ... все заработало.