我有一个NSPopUpButton。每当我向其中添加或删除项目时,第一个项目都会自动被选择。我想抑制这种情况;我希望NSPopUpButton出现时未选择任何内容,并且在用户选择某些内容之前不要选择任何内容。

一切都在用代码构造。 (这是一个后端; GUI布局来自其他地方。)

NSComboBox已经做到了。

对于NSTableView,我使用了NSArrayController和Cocoa绑定,所以我可以这样做:

[ac setSelectsInsertedObjects:NO];              // for insertions
[ac setAvoidsEmptySelection:NO];                // for deletions


我尝试使用NSPopUpButton进行此操作,但这并没有改变行为:仍会自动选择第一项。

我还尝试过根据IRC的建议访问某人的支持NSMenu并添加该内容;行为没有改变。

我注意到NSPopUpButtonsynchronizeTitleAndSelectedItem上有一个方法,似乎完全按照我说的NSPopUpButton本身的方法执行,但是我看不到在NSPopUpButtonNSPopUpButtonCell中禁用它的方法。我是否必须使NSPopUpButton子类化才能使此方法不起作用?我对这个想法并不特别感兴趣。

还有我在做错什么吗?谢谢。

最佳答案

推测,但可能的答案:

如果您使用的是arrayController,并且已绑定了内容但未绑定selectionIndex,则弹出窗口将使选择索引保持为零,即使该索引处的对象在其他地方发生碰撞也是如此。

因此也将选择索引绑定到数组控制器。

10-06 01:17