NSMatrix avec des custom NSCell
olivier555
Membre
Bonjour,
Je voudrais créer une NSMatrix (je suppose que c'est la meilleure méthodes pour ce que j'essaie de faire) qui affiche dynamiquement un nombre de custom views les unes en dessous des autres (en fonction des données du logiciel, les cellules sont donc créées ou supprimées par le code). Les custom views sont identiques et peuvent aller de une à 256, et possèdent bouton, slider, etc... . Comment faire de manière simple et élégante s'il vous-plaà®t? Merci!
Je voudrais créer une NSMatrix (je suppose que c'est la meilleure méthodes pour ce que j'essaie de faire) qui affiche dynamiquement un nombre de custom views les unes en dessous des autres (en fonction des données du logiciel, les cellules sont donc créées ou supprimées par le code). Les custom views sont identiques et peuvent aller de une à 256, et possèdent bouton, slider, etc... . Comment faire de manière simple et élégante s'il vous-plaà®t? Merci!
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
NSMatrix n'affiche des NSCell. Or ton "custom-view" est un objet graphique riche (puisque contenant d'autres NSControls).
Bref, tu vas galérer à construire un custom-cell qui sera équivalente à ton custom-view.
A ta place, je crois que je gèrerais la chose en créant un NSView chargé d'accueillir les x custom-views.
Pour ajouter un custom-view, un addSubview: avec les bonnes coordonnées de frame. Et pour retirer, removeFromSuperview.
Le plus dur sera la gestion des coordonnées, mais ça reste dans le domaine du faisable.
.
le programme ne m'affiche qu'une customView. Et comment je fais pour les gérer indépendamment? Tu vois ce que je veux dire?
C'est le principe auquel je pensais.
Dans IB tu fabriques ton custom-view qui servira de modèle...
Pour la gestion de l'ajout et du chargement, je te donnerais un petit exemple ce soir (là , au taf, je n'ai qu'un moche PC et un moche Windows)...
.
C'est minimaliste, mais ça illustre bien le concept d'une matrice de custom-view à partir d'un NSView modèle.
A toi de comprendre le principe, d'étoffer le code.
.
[Fichier joint supprimé par l'administrateur]
Alors que le pointeur vers la vue elle même n'est pas nul. Sur ton projet cela marche nikel mais je ne vois pas la différence. Aurais-tu une idée?
Chaque custom-view instancié (par loadNibNamed:owner:) est "connecté" à son owner. Le owner est une instance de O555ViewController qui contient les IBOutlet et IBAction que tu vas utiliser dans le nib.
Dans le nib, le owner est représenté par l'icône "File's Owner" dans la fenêtre principale.
Dans mon projet, j'ai mis en custom-class de File's Owner la classe O555ViewController.
C'est entre File's Owner et le custom-view qu'il faudra lier les outlets et actions.
Donc, si tu modifies le header de la classe O555ViewController dans Xcode, il faut répercuter les modifs dans IB, et refaire les liaisons d'outlets et actions.
Pour mettre à jour le header dans IB, va dans l'onglet Classes de la fenêtre principale de IB, puis, cherche la classe O555ViewController dans le browser de classe (sous-classe de NSObject), enfin, fais un clic droit sur la classe et choisis l'option de menu "Read O555ViewController.h file".
Après, il ne te reste plus qu'a connecter les nouveaux IBOutlet/IBAction aux éléments du custom-view.
.