1

J'ai ce que je pensais être un besoin assez simple mais je ne suis pas sûr de savoir comment l'implémenter.Comment puis-je implémenter une vue basée sur des vignettes pour la sélection des utilisateurs dans Cocoa?

À différents points de mon interface, l'utilisateur doit sélectionner quelque chose de plutôt visuel (comme choisir une mise en page pour une page ou une option de couleur). Ces sélections sont faites à partir d'un ensemble prédéfini d'options. Normalement, vous utiliseriez un NSPopUpButton, ou peut-être un NSTableView, mais j'aimerais que l'utilisateur voit les vignettes de chaque option de sélection. Ces vignettes doivent également avoir une taille correcte - au moins 100x100 pixels. Chaque vignette doit également être accompagnée d'une étiquette de texte. Une seule sélection est autorisée à la fois.

d'Apple met en œuvre quelque chose plutôt comme ceci dans iWeb:

iweb http://img187.imageshack.us/img187/5744/iweb.jpg

Bien sûr, vous avez l'habitude de voir quelque chose comme ceci avec de petites icônes:

xcode http://img690.imageshack.us/img690/7851/ixcode.jpg

Je suis Je pense que NSCollectionView est le bon endroit pour commencer, mais je n'ai jamais vu cela que dans des scénarios beaucoup plus compliqués (ex: affichage du contenu d'un répertoire, prise en charge du glisser-déposer, etc.) par conséquent, la plupart du code que j'ai trouvé est plutôt compliqué.

Existe-t-il une solution plus simple pour remplir cette vue avec des données statiques prédéfinies et permettre simplement une sélection simple? En d'autres termes, je cherche la fonctionnalité d'un bouton pop-up, mais une interface utilisateur différente.

Mise à jour: solution

I utilisé IKImageBrowser, comme l'a suggéré. This tutorial était très utile. Dans IB: je viens de créer un IKImageBrowser dans mon interface, l'ai enveloppé dans une vue défilante et en ai fait la source de données de l'objet du navigateur. Dans le code: implémenté le protocole de source de données dans mon contrôleur comme le tutoriel explique, set allowMultipleSelection et permetEmptySelection à NO, créé un objet image personnalisé en utilisant la représentation de l'image URL exactement comme expliqué dans le tutoriel.

Ensuite, pour obtenir la sélection, j'ai écrit la méthode suivante pour être déclenché lorsque l'utilisateur clique sur le bouton « OK »:

NSIndexSet *retval = [imageBrowser selectionIndexes]; 
NSInteger i = [retval firstIndex]; //the index of the selection. Corresponds to index in my array data source 
NSString* path = [[styleViewData objectAtIndex:i] imageRepresentation]; //path to selected image, if you need it 

Le tutoriel est très utile - simplement ignorer les choses sur l'ajout d'images et les curseurs de zoom et autres.

Répondre

5

Vous voulez IKImageBrowserView.

+0

Oui. Je seconde ceci. Tout ce que vous devez fournir est une URL pour chacune de vos images statiques. –

+0

Dang, ça fonctionne comme un charme. Merci. –