6

我正在将此通知用于 NSComboBox。唯一的问题是当我在下拉列表中选择不同的项目时,它总是在组合框中显示先前选择的值。如何获取当前选择的值。我需要根据值启用/禁用一些控件。

- (void)comboBoxSelectionDidChange:(NSNotification *)notification {
        NSComboBox *comboBox = (NSComboBox *)[notification object];

        NSLog(@"[comboBox stringValue] : %@", [salaryBy stringValue] );
}
4

3 回答 3

12

我使用以下方法获得了选定的值:

NSString *strValue = [comboBox itemObjectValueAtIndex:[comboBox indexOfSelectedItem]];
于 2011-04-19T12:01:23.073 回答
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);
}

产生期望的结果

于 2014-01-11T07:29:49.180 回答
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"]);



}

希望这有帮助。

于 2014-05-10T04:13:20.677 回答