NSComboBoxCell et Datasource (tests)
iLandes
Membre
Voilà mon petit soucis. Je parcours la doc de long en large et il manque un petit coup de pouce pour bien comprendre le fonctionnement des datasource.
Je tente d'utiliser les datasource pour remplir un NSCombBoxCell. J'ai déterminé une classe data source ci-dessous pour faire un test. J'ai linké dans IB ma combo box cell à mon objet (outlet datasource vers l'objet désignant ma classe "MidiNoteDataSource".
Mais voilà mon combobox est rempli de vide. J'espérais une ligne avec "Item 1" en contenu. Ce n'est bien sur pas le but finale mais j'ai du mal à comprendre pourquoi ça ne marche pas.
D'avance, merci de votre aide.
.h
#import <Foundation/Foundation.h>
@interface MidiNoteDataSource : NSComboBox <NSComboBoxDataSource>
@end
.m
@implementation MidiNoteDataSource
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index
{
return @item 1;
}
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox
{
return 1;
}
@end
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ca devrait fonctionner ...
Vérifie que tu as bien coché "Uses DataSource" dans IB.
Par ailleurs:
@interface MidiNoteDataSource : NSComboBox <NSComboBoxDataSource>
Pourquoi faire dériver MidiNoteDataSource de NSComboBox ?
Ca devrait mais pas.
Merci mpergrand, j'ai finalement trouvé. C'est pas la première fois que je me fais avoir avec les Cells... Voici la solution ci-dessous et effectivement NSObject suffit pas NSComboBox... Même si c'est en me demandant pourquoi je dérivait de cette classe que j'ai finalement trouvé que je tentais de remplir de NSCombBoxCells et pas des NSComboBox !
MidiNoteDataSource.h
@interface MidiNoteDataSource : NSObject <NSComboBoxDataSource>
@end
MidiNoteDataSource.m
#import "MidiNoteDataSource.h"
@implementation MidiNoteDataSource
- (id)comboBoxCellNSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index
{
return [[MidiNote internationalNotesArray] objectAtIndex:index];
}
- (NSInteger)numberOfItemsInComboBoxCellNSComboBox *)aComboBox
{
return [[MidiNote internationalNotesArray] count];
}