如何验证通过Cocoa绑定动态填充的菜单项

时间:2011-11-10 16:04:27

标签: cocoa cocoa-bindings

上下文
我正在通过Cocoa Bindings填充TableView的NSPopupMenuCell菜单。一切都很好(我已经绑定了'内容','内容价值'和'选定对象')。菜单在运行时正确填充,并且正确设置了基础变量(通过KVC)。一切都在这方面发挥作用。

我的问题
接下来我想控制填充的菜单项的状态(因为有些需要被禁用)。现在我非常仔细地阅读了关于Enabling Menu Items的Apple文档......但是对于我的生活,我似乎无法实现validateMenuItem:validateUserInterfaceItem:实际上它们被调用的地方。

除其他事项外,我已尝试在现有的App委托中实现这些方法,但没有任何乐趣。我可能误解了第一响应者链的某些内容吗?

另外,从逻辑上讲,另一种可能性是实际上的菜单项有目标(以上假定它们没有)。但是,再一次,我似乎无法确定他们的目标(因此我可以在那里实施validateMenuItem:。)

2 个答案:

答案 0 :(得分:1)

NSMenuItem中创建NSPopupMenuCell的动态(通过绑定)的目标结果是NSPopupMenuCell本身(因此您可以将其子类化并在那里实现validateMenuItem: )。

我想是因为NSPopupMenuCell需要执行KVC调用(即setValue:forKey:)。

答案 1 :(得分:0)

如果您正在使用绑定来准备内容,您还可以将每个NSMenuItem的{​​{1}}属性绑定到模型中的布尔值,表示是否应该启用它。