Problème avec editColumn:row:..;

mickadedel

Membre confirmé
29 Août 2006
33
0
Bonjour à tous,

J'aimerais, pour des raisons purement pratiques, pouvoir faire en sorte qu'après l'édition de la dernière cellule d'une TableView, une nouvelle row soit créée, et que le curseur soit sur la nouvelle cellule fraichement créée.

J'arrive sans problème à créer la nouvelle ligne : j'utilise l'action dans IB que je connecte à une méthode d'un controleur maison, qui teste si la cellule éditée était la dernière.

Le soucis, c'est que je n'arrive pas à donner la main à cette nouvelle ligne créée => la première ligne est systématiquement la ligne active au lieu de la nouvelle ligne créée.
Dans la doc d'Apple, j'ai découvert la méthode
Bloc de code:
[laTable editColumn: row: withEvent: select:]
. Le soucis, c'est que j'ai toujours un message d'erreur du style :
Bloc de code:
Assertion failure in -[NSTableView editColumn:row:withEvent:select:]
et
Bloc de code:
Exception raised during posting of notification.  Ignored.  exception: Invalid parameter not satisfying: _lastSelectedRow == row
après avoir envoyé le message
Bloc de code:
[laTable editColumn:1 row:4 withEvent:nil select:NO]
.
La colonne 1 et la ligne 4 existe bien dans la table, qui contient 2 colonnes et 8 ligne, donc ce n'est pas un problème de ligne ou colonne inexistante...

Quelqu'un sait-il utiliser correctement cette méthode ?
 
Bonjour

Après une lecture plus attentive de la doc, je me suis aperçu qu'il fallait d'abord sélectionner la ligne, ce que j'ai donc fait. Je n'ai plus l'erreur.... MAIS

En debuggant, je m'aperçois que, pas à pas : Lorsque j'ai terminé l'édition de la dernière cellule, une méthode add: que j'ai implémentée est bien appelée, il y a bien création d'une nouvelle ligne, cette ligne est bien sélectionnée, puis la première cellule de la ligne est bien mise en édition, puis, quand la méthode add: est terminée LE FOCUS EST DONNEE A LA PREMIERE CELLULE DE LA TABLE ET NE RESTE PAS SUR LA NOUVELLE LIGNE CREEE !!??!!

Je suppose donc que l'action de la tableVIew que j'ai liée dans IB appelle d'abord ma méthode add:, et ensuite en appelle une autre qui redonne le focus à la 1ere ligne, parcequ'à l'appel, la nouvelle ligne n'existe pas encore ? Comment empecher ça ?