我有一个NSPopUpButton
。每当我向其中添加或删除项目时,第一个项目就会自动选择。我想抑制这种情况;我希望 NSPopUpButton
在未选择任何内容的情况下出现,并且在用户选择某些内容之前不选择任何内容。
一切都是用代码构建的。 (这是一个后端;GUI 布局来自其他地方。)
NSComboBox
已经做到了这一点。
对于 NSTableView
,我使用了 NSArrayController
和 Cocoa 绑定(bind),所以我可以这样做:
[ac setSelectsInsertedObjects:NO]; // for insertions
[ac setAvoidsEmptySelection:NO]; // for deletions
但是,我使用 NSPopUpButton
尝试了此操作,但这并没有改变行为:第一个项目仍然会自动选择。
我还尝试根据 IRC 的建议访问支持的 NSMenu
并添加;行为没有改变。
我注意到 NSPopUpButton
上有一个方法 synchronizeTitleAndSelectedItem
,它似乎完全按照我所说的 NSPopUpButton
本身执行的操作,但我不这样做在 NSPopUpButton
或 NSPopUpButtonCell
中找不到禁用它的方法。我是否必须子类化 NSPopUpButton
才能使此方法不执行任何操作?我对这个想法并不特别感兴趣。
我还做错了什么吗?谢谢。
最佳答案
猜测,但可能的答案:
如果您使用的是 arrayController,并且已绑定(bind)内容但未绑定(bind)选择索引,则弹出窗口将保持选择索引为零,即使该索引处的对象在其他地方发生碰撞。
因此,也将选择索引绑定(bind)到数组 Controller 。
关于objective-c - cocoa:如何抑制 NSPopUpButton 自动选择/同步? NSArrayController 和 NSMenu 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23715275/