objective-c - cocoa:如何抑制 NSPopUpButton 自动选择/同步? NSArrayController 和 NSMenu 不起作用

标签 objective-c cocoa combobox nspopupbutton

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

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

NSComboBox 已经做到了这一点。

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

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

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

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

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

我还做错了什么吗?谢谢。

最佳答案

猜测,但可能的答案:

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

因此,也将选择索引绑定(bind)到数组 Controller 。

关于objective-c - cocoa:如何抑制 NSPopUpButton 自动选择/同步? NSArrayController 和 NSMenu 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23715275/

相关文章:

ios - 如何使 UIButton 文本对齐中心?使用 IB

objective-c - Cocoa WebView不响应键盘事件

objective-c - OSX应用程序,获取用户使用NSOpenPanel选择的文件数据

javascript - 使用 javascript 获取 devexpress 组合框中选定的项目 ID

c# - ComboBox.ValueMember 和 DisplayMember

ios - Xcode 6 错误 'Duplicate interface definition for class ' ViewController'

objective-c - Objective-C - 如何使用给定的窗口 ID 以编程方式调整窗口大小?

iphone - 如何只显示有电话号码的联系人?

iphone - 正确从 View 和数组中删除对象?

java - 使用表值填充组合框