Domanda

Ho un NSCOMBOBOX in una barra NSTool e voglio che la casella combinata invieda messaggi al suo dati da dati e delega.

La mia classe adotta il NSComboBoxDelegate e NSComboBoxDataSource protocolli. Creo la mia scatola combinata in questo modo

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

Implego anche i seguenti metodi DataSource e delegati hanno avuto punti di rottura, ma nulla viene inviato a quei metodi.

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

Qualche suggerimento su ciò che potrei fare di sbagliato? Grazie.

È stato utile?

Soluzione

L'ho fatto funzionare creando la casella combinata in Interface Builder e quindi impostando la mia classe personalizzata come settimo posto nella cella della casella combinata e il delegato nella casella combinata. Invece di adottare NSComboBoxDataSource, Ho adottato NSComboBoxCellDataSource invece.

Non so perché il mio primo metodo non abbia funzionato, ma questo nuovo metodo sembra fare bene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top