Tri par défaut dans un NSTableView (avec Coredata et Bindings)
dakuja
Membre
Bonjour,
J'ai un NSTableView bindé avec un NSArrayController.
Les tris par défaut fonctionnent très bien, mais quand j'ouvre l'application, il n'y a aucun tri par défaut. J'ai beau trifouiller sur le net, je n'arrive pas à trouver une solution pour le tri par défaut (pas toujours facile d'ailleurs de trouver des informations sur les technos apple, heureusement que ce merveilleux site existe).
Pour faire un tri par défaut, est ce possible par le bindings ? si non comment le faire par le code ?
Merci
J'ai un NSTableView bindé avec un NSArrayController.
Les tris par défaut fonctionnent très bien, mais quand j'ouvre l'application, il n'y a aucun tri par défaut. J'ai beau trifouiller sur le net, je n'arrive pas à trouver une solution pour le tri par défaut (pas toujours facile d'ailleurs de trouver des informations sur les technos apple, heureusement que ce merveilleux site existe).
Pour faire un tri par défaut, est ce possible par le bindings ? si non comment le faire par le code ?
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Je vais faire des recherches dessus, je vous tiens au courant
j'ai moi aussi découvert ce site il n'y a pas très longtemps et je le trouve vraiment super
Pour les sortes decriptor, tu peux par exemple créer un NSArray qui va contenir les descripteurs dont tu as besoin, et créer pour cette variable des "accesseurs", (pour que cette variable soit utilisable par les bindings).
Ensuite dans la méthode appelée lors de l'initialisation tu peux attribuer l'ordre de trie dont tu as besoin:
Par exemple, si tu travailles avec un NSDocument, dans la déclaration tu déclare ton NSArray:
NSArray *mesSortOrders;
puis tu déclares les accesseurs:
- (NSArray *)mesSortOrders;
- (void)setMesSortOrders:(NSArray *)value;
dans le .m
l'implementation:
- (NSArray *)mesSortOrders {
return [[mesSortOrders retain] autorelease];
}
- (void)setMesSortOrders:(NSArray *)value {
if (mesSortOrders != value) {
[mesSortOrders release];
mesSortOrders = [value retain];
}
}
et dans ce même .m, dans
- (void)windowControllerDidLoadNib:(NSWindowController *)windowController
{
NSSortDescriptor *orderDescriptor;
orderDescriptor = [NSSortDescriptor alloc] initWithKey:@"date" ascending:YES] autorelease];<br /> [self setMesSortOrders:[NSArray arrayWithObject:orderDescriptor;
}
(tu peux en ajouter d'autres à ta convenance)
ensuite il suffit de lier la variable SortOrder ton ArrayController (celui qui sert de source à ta table view), au file Owner avec pour KeyPath: mesSortOrders
Dans ce cas, tu auras toujours le même sort order au démarrage de l'application, si tu veux pouvoir sauvegardé l'ordre de trie choisi par l'utilisateur, tu peux le lier au User defaults, c'est le même principe.