So lassen Sie NSCOMBOBOX in einem Nstoolbar, um Nachrichten an die DataSource und Delegate zu senden
-
28-10-2019 - |
Frage
Ich habe einen nscombobox in einer Nstoolbar und möchte, dass das Kombinationsfeld Nachrichten an seine DataSource und Delegate senden soll.
Meine Klasse adoptiert die NSComboBoxDelegate
und NSComboBoxDataSource
Protokolle. Ich erstelle meine Kombinationsbox wie diese
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];
Ich implementiere auch die folgenden Datenquellen- und Delegiertenmethoden haben Bruchpunkte, aber es wird nichts an diese Methoden gesendet.
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index;
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox;
- (void)comboBoxSelectionDidChange:(NSNotification *)notification;
Irgendwelche Vorschläge zu dem, was ich falsch mache? Vielen Dank.
Lösung
Ich habe es zum Laufen gebracht, indem ich das Kombinationsfeld im Interface Builder erstellt und dann meine benutzerdefinierte Klasse als DataSource für die Kombinationsbox -Zelle und den Delegierten in das Kombinationsfeld festgelegt habe. Anstatt zu adoptieren NSComboBoxDataSource
, Ich adoptierte NSComboBoxCellDataSource
stattdessen.
Ich weiß nicht, warum meine erste Methode nicht funktioniert hat, aber diese neue Methode scheint die Pause zu tun.