NSArrayController et mise-à -jour d'une TableView
helgrind
Membre
Bonjour,
J'utilise les bindings et Core Data pour remplir une tableview.
Quand j'appele la méthode add: de NSArrayController pour ajouter une ligne, j'aimerais pouvoir éditer la nouvelle ligne -et pas seulement la sélectionner.
J'ai donc créé une sous-classe de NSArrayController où j'implémente la méthode add: et je demande à ma tableView d'éditer la ligne correspondante.
Or la sélection de la tableView n'est pas mise-à -jour et j'obtient la ligne sélectionnée précédente... ???
:why?:
J'utilise les bindings et Core Data pour remplir une tableview.
Quand j'appele la méthode add: de NSArrayController pour ajouter une ligne, j'aimerais pouvoir éditer la nouvelle ligne -et pas seulement la sélectionner.
J'ai donc créé une sous-classe de NSArrayController où j'implémente la méthode add: et je demande à ma tableView d'éditer la ligne correspondante.
- (void)add:(id)sender<br />{<br /> [super add:sender];<br /> int selectedRow = [tableView selectedRow];<br /> [tableView editColumn:1 row:selectedRow withEvent:nil select:YES];<br />}
Or la sélection de la tableView n'est pas mise-à -jour et j'obtient la ligne sélectionnée précédente... ???
:why?:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Peut-être aurais-tu plus de succès (sans forcément sous-classer l'arrayController mais) en créant toi même ton entitée à ajouter (ses liens surtout) puis en appelant addObject: au lieu de add: .
[EDIT] Sous-Classer un ArrayContrôller en lui donnant un pointeur sur une tableView ça me paraà®t pas idéal ce truc là .
Pourquoi ne pas soit:
- T'inscrire comme délégué de ta tableView et, à chaque tableViewSelectionDidChange vérifier si c'est du à l'ajout d'un nouvel élément ...
- Ou, puisque tu utilises Core Data, surveiller les notifications NSManagedObjectContextObjectsDidChangeNotification et vérifier si c'est une NSInsertedObjectsKey sur l'entité qui t'intéresses ?
D'une façon générale il me semble qu'il faut prendre garde à ne pas sous-Classer trop facilement pour une tâche qui peut être accomplie autrement.
Surtout si en sous-classant on brise un peu le MVC paradigme en créant une référence directe à un élément d'interface dans une partie contrôleur plus conçue pour ne gérer en direct que la source de données.
Je viens d'essayer avec
puis d'éditer la ligne, et là , ca marche ::)
Merci.
Ah ben OUI !!