2011-02-01 20 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代替。

我不知道为什么我的第一种方法不起作用,但这种新方法似乎做得很好。