根据按键更改NSPopUpButton项目的可见性

时间:2011-11-29 02:52:11

标签: objective-c cocoa nsarraycontroller nsmenuitem nspopupbutton

我在这里有一个应用程序需要从外部文件中读取一堆数据,并在Cocoa用户界面中将其显示为NSPopUpButton。这里的问题是,正在读入的数据需要有一个标志,表明它是否被视为“隐藏”。

如果数据被隐藏,则需要将NSPopUpButton作为NSMenuItem添加到hidden,但需要将YES标记设置为NSPopUpButton通常不会出现在NSMenuItem菜单中。如果用户在键盘上按下“魔术键”(通常是ALT,在这种情况下),则需要取消隐藏这些隐藏的对象。如果用户放开ALT键,则需要自动重新隐藏它们,除了可能已被选择的那个 - 如果选择了另一个NSArrayController,它将被隐藏。

实际上,我有点时间搞清楚这一点。

我想知道是否有使用NSPopUpButtonNSMenuItem这样做的直接方法,但到目前为止我还没有找到任何类似解决方案的东西 - 而不是当它到来时管理{{1}}对象的隐藏属性。

有谁知道如何使用Cocoa Bindings实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以将弹出窗口连接到阵列控制器并更改过滤器谓词。从MVC设计的角度来看,你不会使用像“hidden”这样的属性,这是一个视图特征,但可能是“高级”。通常,将阵列控制器上的过滤谓词设置为“advanced = no”。然后,当用户拥有首选修饰符时,删除谓词。弹出窗口将自动更新。数组控制器应绑定到另一个对象(在数据模型中)的数组属性。弹出窗口应绑定到阵列控制器上的arrangeObjects。