2011-02-01 1 views
3

У меня есть NSComboBox в NSToolbar, и я хочу, чтобы поле со списком отправляло сообщения его источнику данных и делегированию.Как получить NSComboBox в NSToolbar для отправки сообщений в источник данных и делегировать

Мой класс принимает протоколы NSComboBoxDelegate и NSComboBoxDataSource. Я создаю мой выпадающий как этот

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]; 

Я также осуществлять следующие DataSource и делегат методы были иметь точки излома в них, но ничего не направляется на эти методы.

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

Любые предложения о том, что я могу делать неправильно? Спасибо.

ответ

1

Я получил его для работы, создав поле со списком в Interface Builder, а затем установив свой собственный класс в качестве источника данных в ячейку со списком и делегат в поле со списком. Вместо того, чтобы принимать NSComboBoxDataSource, вместо этого я принял NSComboBoxCellDataSource.

Я не знаю, почему мой первый метод не сработал, но этот новый метод, похоже, делает все хорошо.

Смежные вопросы