nstoolbarでnscomboboxを取得してデータソースとデリゲートにメッセージを送信する方法
-
28-10-2019 - |
質問
私はnstoolbarにnscomboboxを持っています、そして、私はコンボボックスにそのデータソースとデリゲートにメッセージを送信することを望んでいます。
私のクラスはを採用しています 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とDelegateメソッドにはブレークポイントがありますが、これらの方法には何も送信されていません。
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index;
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox;
- (void)comboBoxSelectionDidChange:(NSNotification *)notification;
私が間違っていることについての提案はありますか?ありがとうございました。
解決
インターフェイスビルダーにコンボボックスを作成し、カスタムクラスをコンボボックスセルへのデータソースとして、デリゲートをコンボボックスに設定することで機能しました。採用する代わりに NSComboBoxDataSource
, 、私は採用しました NSComboBoxCellDataSource
代わりは。
なぜ私の最初の方法が機能しなかったのかわかりませんが、この新しい方法ではうまくいくようです。
所属していません StackOverflow