Mar*_*ell 4 macos cocoa objective-c nscombobox
对于我的生活,我一直被困扰着NSComboBox.
我创建了一个符合NSComboBoxDataSource协议的对象,并实现了:
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox;
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index;
Run Code Online (Sandbox Code Playgroud)
我将my的实例设置NSComboBox为使用数据源,并将此对象设置为源.这很好用,我的实现返回项目数,并返回NSString特定索引处项目的值.
然后我决定在选择某些东西时我想做点什么,这就是我的问题开始的地方.在NSComboBoxDataSource协议中没有明显的方法可以覆盖组合框中的项目选择.
所以,我也有我的对象符合NSComboBoxDelegate并实现:
- (void)comboBoxSelectionDidChange:(NSNotification *)notification;
Run Code Online (Sandbox Code Playgroud)
不幸的是,与NSTableView选择不同,通知的对象NSComboBox不是所选项目的对象."很好"我告诉自己,我会称之为NSComboBox方法:
- (id)objectValueOfSelectedItem;
Run Code Online (Sandbox Code Playgroud)
这应该返回选中的项目,我可以从那里开始.但是,只有当usesDataSource设置为时,才会调用该方法NO,这不是我的情况.我使用它时警告开始飞行.
所以,我的问题是,NSComboBox在使用数据源时处理选择的正确方法是什么?
nal*_*all 15
我想你想要indexOfSelectedItem而不是objectValueOfSelectedItem.然后,由于您是数据源,因此您应该可以调用自己的comboBox:objectValueForItemAtIndex:方法.
| 归档时间: |
|
| 查看次数: |
9300 次 |
| 最近记录: |