如何将NSMenuItem(已启用)的状态绑定到NSNumber的特定值?
即
如果myNumber == 2则应启用我的NSMenuItem
我需要为几个NSMenuItem执行此操作:
即。
如果myNumber = 3则应启用我的第二个NSMenuItem
感谢
答案 0 :(得分:0)
使用IBOutlet
到NSButton
并禁用界面构建器中的所有按钮。然后使用If else条件并启用您的按钮。
IBOutlet NSButton *my1;// Disable
IBOutlet NSButton *my2; //Disable
If(myNumber ==1)
[my1 setState:NSOnState];
else If(myNumber ==2)
[my1 setState:NSOnState];
答案 1 :(得分:0)
我发现ValueTransformer
太麻烦了。它比这简单得多。只需创建如下的控制器对象
class FooMenuController: NSObject {
@IBAction func selectedNumberChanged(sender: NSMenuItem) {
UserDefaults.fooNumber = sender.tag
}
}
extension FooMenuController: NSMenuItemValidation {
func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
let on = (menuItem.tag == UserDefaults.fooNumber)
menuItem.state = on ? .on : .off
return true
}
}
在您的MainMenu.xib
中,从库中拖出一个NSObject
实例,并将其设置为您的FooMenuController
子类。现在,将每个action
上的NSMenuItem
设置为FooMenuController.selectedNumberChanged
,并将其tag
的值设置为其应表示的数字。
Voila。
答案 2 :(得分:-1)
你可以在IB
中绑定它的(NSButton)“值”