2011-02-01 19 views
3

我有一個NSToolbar中的NSComboBox,我希望組合框發送消息到它的數據源和委託。如何獲得NSToolbar中的NSComboBox發送消息到數據源和委託

我的班級採用NSComboBoxDelegateNSComboBoxDataSource協議。我創建這樣

NSRect comboBoxRect = NSMakeRect(0, 0, 175, 20); 
    NSComboBox *sourceComboBox = [[NSComboBox alloc] initWithFrame:comboBoxRect]; 
    [sourceComboBox setDataSource:self]; 
    [sourceComboBox setDelegate:self]; 
    [sourceComboBox setUsesDataSource:YES]; 
    [sourceComboBox setEditable:NO]; 

    NSToolbarItem *sourceComboBoxItem = [[NSToobarItem alloc] initWithItemIdentifier:@"MyID"]; 
    [sourceComboBoxItem setView:sourceComboBox]; 
    [sourceComboBoxItem setMinSize:NSMakeSize(175*1.2, SEGMENT_HEIGHT)]; 
    [sourceComboBoxItem setMaxSize:NSMakeSize(175*1.2, SEGMENT_HEIGHT)]; 
    [sourceComboBoxItem setDelegate:self]; 
    [sourceComboBoxItem setTag:4]; 

我也實現了以下數據源和委託方法曾在他們有個破發點我的組合框,但沒有被髮送到那些方法。

- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index; 
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox; 
- (void)comboBoxSelectionDidChange:(NSNotification *)notification; 

有關我可能做錯什麼的建議?謝謝。

回答

1

我通過在界面生成器中創建組合框,然後將我的自定義類設置爲數據源組合框單元格和代理組合框,以得到它的工作。代替採用NSComboBoxDataSource,我採用NSComboBoxCellDataSource代替。

我不知道爲什麼我的第一種方法不起作用,但這種新方法似乎做得很好。