objective-c - 无法从 NSComboBox 检索选定的索引

标签 objective-c cocoa nscombobox

我尝试使用indexOfSelectedItem获取具有数据源的NSComboBox的选定索引。

[combobox setUsesDataSource:YES];
[combobox setDataSource:dataSource];
[combobox selectItemAtIndex:1];
int idx =[combobox indexOfSelectedItem];

idx 将始终返回 -1;

即使在 InterfaceBuilder 中为 NSComboBox 定义内部列表,也能获得相同的结果。

还有其他方法可以检索所选索引吗?

最佳答案

您可以尝试调用 [combobox numberOfItems]; 只是为了确保列表中有项目。

此外,调用 selectItemAtIndex:1 应触发 NSComboBoxSelectionDidChangeNotification您可以聆听以确保它发生变化。

编辑 1: 另外,您是否确保在 Interface Builder 中的 ComboBox 的“属性检查器”(Command-1 快捷键)上选择“使用数据源”?默认情况下,它使用内部列表,这会与您尝试使用的 DataSource 方法冲突。

编辑 2:不要介意之前的注释,您的代码会明确调用它。

关于objective-c - 无法从 NSComboBox 检索选定的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1681719/

相关文章:

objective-c - 如何使 NSView 透明,但保持属于它的对象不变?

objective-c - NSToolbar 中的 NSComboBox 通过 IB 抛出异常

macos - NSCombobox 太大

ios - 完成 block 完成后返回一个数组

ios - UINavigationViewController 中推送的 UIViewController 数量限制

objective-c - 有没有更好的方法从其 subview 访问文档?

objective-c - NSTextFinder 以编程方式设置搜索字符串并清除视觉反馈

iphone - 作为掩码的 CGImageRef 和不是掩码的 CGImageRef 有什么区别?

objective-c - 在 Objective-c 中从 exif 获取相机和镜头

xcode - 带有绑定(bind)的 NSComboBox 和 NSTextField