2011-02-01 6 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

私はInterface Builderでコンボボックスを作成し、カスタムクラスをコンボボックスセルのデータソースとコンボボックスのデリゲートとして設定しました。代わりにNSComboBoxDataSourceを採用する代わりに、NSComboBoxCellDataSourceを採用しました。

私の最初の方法がうまくいかなかった理由はわかりませんが、この新しい方法はうまくやっているようです。