我正在使用NSComboBox的这个通知。唯一的问题是当我在下拉列表中选择不同的项目时,它总是在组合框中显示先前选择的值。如何获取当前选定的值。我需要根据值进行一些控制启用/禁用。
- (void)comboBoxSelectionDidChange:(NSNotification *)notification {
NSComboBox *comboBox = (NSComboBox *)[notification object];
NSLog(@"[comboBox stringValue] : %@", [salaryBy stringValue] );
}
答案 0 :(得分:8)
我使用以下方法获得了所选值:
NSString *strValue = [comboBox itemObjectValueAtIndex:[comboBox indexOfSelectedItem]];
答案 1 :(得分:1)
我也注意到了这个错误并以不同的方式修复了它。当我们在comboBoxSelectionDidChange方法调用之后读取主运行循环的下一次运行中的值时,可以获取正确的值,如下所示
- (void)comboBoxSelectionDidChange:(NSNotification *)notification{
[self performSelector:@selector(readComboValue:) withObject:[notification object] afterDelay:0];
}
- (void)readComboValue:(id)object
{
NSString *comboValue = [(NSComboBox *)object stringValue];
NSLog(@"%@", comboValue);
}
产生所需的结果
答案 2 :(得分:1)
我成功使用这些代码!
设置:
@interface YourWindowController : NSWindowController<NSComboBoxDelegate,NSComboBoxDataSource>
- (void)windowDidLoad
{
comboBox.usesDataSource = YES;
comboBox.datasource = self;
comboBox.delegate = self;
[comboBox selectItemAtIndex:0];
}
-(void)comboBoxSelectionDidChange:(NSNotification *)notification
{
NSLog(@"Selection = %@ ",[[array objectAtIndex: (long)[comboBox indexOfSelectedItem]] objectForKey:@"yourkey"]);
}
希望得到这个帮助。