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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top