3

我在 NSToolbar 中有一个 NSComboBox,我希望组合框将消息发送到它的数据源和委托。

我的班级采用NSComboBoxDelegateandNSComboBoxDataSource协议。我像这样创建我的组合框

    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;

关于我可能做错了什么的任何建议?谢谢你。

4

1 回答 1

1

我通过在 Interface Builder 中创建组合框然后将我的自定义类设置为组合框单元格的数据源和组合框的委托来让它工作。NSComboBoxDataSource我没有采用,而是采用了NSComboBoxCellDataSource

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

于 2011-02-01T22:54:45.243 回答