gpt4 book ai didi

objective-c - NSComboBox - 获取选定的信息和 NSComboBoxDataSource

转载 作者:太空狗 更新时间:2023-10-30 03:57:07 27 4
gpt4 key购买 nike

在我的一生中,NSComboBox 一直困扰着我。

我创建了一个符合 NSComboBoxDataSource 协议(protocol)的对象,并实现了:

- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox;
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index;

我将 NSComboBox 的实例设置为使用数据源,并将此对象设置为源。效果很好,我的实现返回项目数,并返回特定索引处项目的 NSString 值。

然后我决定在选择某项时执行某项操作,这就是我的问题开始的地方。 NSComboBoxDataSource 协议(protocol)中没有可重写的明显方法来处理组合框中项目的选择。

所以,我也让我的对象符合 NSComboBoxDelegate 并实现:

- (void)comboBoxSelectionDidChange:(NSNotification *)notification;

不幸的是,与选择时的 NSTableView 不同,通知的对象是 NSComboBox 而不是所选项目的对象。 “好吧”我告诉自己,我将调用 NSComboBox 方法:

- (id)objectValueOfSelectedItem;

这应该会返回选中的项目,我可以从那里开始。但是,仅当 usesDataSource 设置为 NO 时才调用该方法,而我的情况并非如此。当我使用它时警告开始飞行。

所以,我的问题是,当您使用数据源时,处理 NSComboBox 选择的正确方法是什么?

最佳答案

我想你想要indexOfSelectedItem而不是 objectValueOfSelectedItem。然后,由于您是数据源,您应该能够调用自己的 comboBox:objectValueForItemAtIndex: 方法。

关于objective-c - NSComboBox - 获取选定的信息和 NSComboBoxDataSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1712515/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com