上下文
我正在通过Cocoa Bindings填充TableView的NSPopupMenuCell
菜单。一切都很好(我已经绑定了'内容','内容价值'和'选定对象')。菜单在运行时正确填充,并且正确设置了基础变量(通过KVC)。一切都在这方面发挥作用。
我的问题
接下来我想控制填充的菜单项的状态(因为有些需要被禁用)。现在我非常仔细地阅读了关于Enabling Menu Items的Apple文档......但是对于我的生活,我似乎无法实现validateMenuItem:
或validateUserInterfaceItem:
实际上它们被调用的地方。
除其他事项外,我已尝试在现有的App委托中实现这些方法,但没有任何乐趣。我可能误解了第一响应者链的某些内容吗?
另外,从逻辑上讲,另一种可能性是实际上做的菜单项有目标(以上假定它们没有)。但是,再一次,我似乎无法确定他们的目标(因此我可以在那里实施validateMenuItem:
。)
答案 0 :(得分:1)
在NSMenuItem
中创建NSPopupMenuCell
的动态(通过绑定)的目标结果是NSPopupMenuCell
本身(因此您可以将其子类化并在那里实现validateMenuItem:
)。
我想是因为NSPopupMenuCell
需要执行KVC调用(即setValue:forKey:
)。
答案 1 :(得分:0)
如果您正在使用绑定来准备内容,您还可以将每个NSMenuItem
的{{1}}属性绑定到模型中的布尔值,表示是否应该启用它。