2011-03-10 80 views
4

我正在使用此通知NSComboBox。唯一的問題是,當我在下拉列表中選擇不同的項目時,它總是顯示組合框中先前選定的值。我如何獲得當前選定的值。我需要根據該值進行一些控制啓用/禁用。comboBoxSelectionDidChange給我以前選擇的值

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

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

回答

8

我使用選定的值:

NSString *strValue = [comboBox itemObjectValueAtIndex:[comboBox indexOfSelectedItem]]; 
+1

這很奇怪。這是一個Apple錯誤 – 2014-01-05 00:09:41

1

我也注意到此問題,並以不同的方式固定它。正確的值可以如下圖所示

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

    [self performSelector:@selector(readComboValue:) withObject:[notification object] afterDelay:0]; 
} 

- (void)readComboValue:(id)object 
{ 
    NSString *comboValue = [(NSComboBox *)object stringValue]; 
    NSLog(@"%@", comboValue); 
} 

產生期望的結果

1

我使用這些代碼成功時,我們讀到的comboBoxSelectionDidChange方法調用後,主運行循環的下一個運行值來獲取!

設置:

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



} 

希望這有助於。

相關問題