Question

J'ai un NSTableView lié à un NSArrayController avec deux colonnes. Une colonne est liée aux objets disposés du contrôleur de tableau et affiche une chaîne.

Je voudrais afficher une image dans l'autre colonne, mais je ne peux tout simplement pas le faire fonctionner. J'ai traîné un NSimageCell dans la colonne et réglé l'image à la main, mais il n'apparaîtra pas au moment de l'exécution. J'ai vérifié et l'image est dans mon répertoire de ressources.

Est-ce que je manque quelque chose? Que dois-je faire d'autre pour faire apparaître cette image?

Était-ce utile?

La solution

Vous voulez donc que la même image apparaisse pour chaque ligne? Est-ce pour cela que vous le définissez "à la main"? Pour cela, vous pouvez mélanger les méthodes NSTableViewDataSource avec des liaisons. L'idée est que votre colonne de chaîne sera liée comme d'habitude, mais votre colonne d'image n'est pas liée. Il a son ensemble d'identifiant (comme "ImageColumn"). Vous utilisez ensuite NumberOfrowsIntableView: et TableView: ObjectValueFortableColmunmn: Row: Pour fournir le nombre d'objets du contrôleur du tableau (il a donc le bon nombre de lignes) et renvoyez simplement toujours votre image statique lorsqu'il demande la valeur de la bonne colonne (vérification de l'ID pour votre "ImageColumn"), renvoyant nullement.

Si l'image n'est pas statique (c'est-à-dire que vous souhaitez l'utiliser comme indicateur d'un type), vous pouvez utiliser la méthode ci-dessus (renvoyer une valeur basée sur l'image) ou des liaisons. Pour utiliser des liaisons, vous pouvez ajouter une propriété à la classe que votre contrôleur de tableau détient, comme "Statut" (un nombre). Vous utiliserez ensuite un NSValuetRansformateur personnalisé qui transforme le numéro d'état en une image correspondante. Votre colonne sera liée au contrôleur de tableau ARROGGEDOBJECTS.STATUS, en utilisant le transformateur de valeur (voir NSvaluTransFormer pour les instructions pour une utilisation - vous devez l'enregistrer, puis utiliser son nom). Le résultat est une image de votre colonne qui correspond à un certain statut.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top