2010-09-09 6 views
0

J'ai un NSTableView qui permet l'édition en ligne sur l'une de ses cellules (NSTextFieldCell). Cela fonctionne vraiment bien, mais le point est: je veux manipuler le contenu pour la session d'édition. Imaginez que vous ayez une chaîne avec un chemin (disons: "dossier/sous-dossier/monfichier.txt") comme contenu d'une telle cellule. Mais lorsque l'utilisateur passe en mode d'édition pour cette cellule (par exemple en double-cliquant), je veux seulement que la chaîne "myfile.txt" soit éditable (c'est-à-dire qu'elle apparaisse dans l'éditeur).Modifier le contenu des cellules dans NSTableView avant d'éditer

Quelqu'un at-il un indice pour moi?

Merci d'avoir lu. Cordialement, Tobi

Répondre

1

Vous pouvez créer un NSFormatter personnalisé qui fait cela. Remplacez la méthode stringForObjectValue: pour renvoyer la chaîne complète et editingStringForObjectValue: pour renvoyer uniquement la partie que vous souhaitez modifier. Vous devez également écrire une méthode getObjectValue:forString:errorDescription: pour transformer la chaîne modifiée en chaîne complète. Comment faire exactement cela dépend du reste de votre programme. Vous devez d'une manière ou d'une autre récupérer la partie de la chaîne que vous avez supprimée pour l'éditer.

+0

Merci pour votre réponse, Sven! J'ai déjà essayé d'utiliser un NSFormatter, mais sans chance jusqu'à présent. Le problème était que lorsque vous connectez NSFormatter à NSCell, il n'influence pas l'édition textField. Ainsi, la chaîne est affichée (formatée) correctement lorsqu'elle est vue "normalement", mais dès que vous passez en mode édition, le NSTextView/FieldEditor responsable ne se soucie pas du formateur (pour lequel je n'ai pas trouvé le moyen de joindre le FieldEditor) ... – Tobidobi

+0

Ensuite, vous devez avoir fait quelque chose de mal dans votre formateur. Si vous l'attachez au 'NSTextCell' de la vue de la table, il est utilisé pour l'affichage et la modification, il n'est pas nécessaire de l'attacher à l'éditeur de champ. De plus, il ne peut pas être attaché à l'éditeur de champ car seuls 'NSCells' ont des formateurs. – Sven

Questions connexes