comboBoxSelectionDidChange给出了我之前选择的值

时间:2011-03-10 20:04:54

标签: macos notifications nscombobox

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

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

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

3 个答案:

答案 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"]);



}

希望得到这个帮助。