Comment puis-je mettre en œuvre une vue basée sur la vignette-pour la sélection de l'utilisateur à Cocoa?
-
13-09-2019 - |
Question
J'ai ce que je pensais était un besoin assez simple mais je ne suis pas sûr de savoir comment s'y prendre pour la mettre en œuvre.
A différents points dans mon interface, l'utilisateur est invité à faire une sélection de quelque chose plutôt visuel (comme le choix d'une mise en page d'une page ou une option de couleur.) Ces sélections sont faites à partir d'un ensemble prédéfini d'options. Normalement vous utilisez un NSPopUpButton, ou peut-être un NSTableView, mais je voudrais l'utilisateur de voir les vignettes de chaque option de sélection. Ces vignettes doivent être d'une taille décente, aussi - 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.
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:
Je pense qu'une NSCollectionView est l'endroit pour commencer, mais je ne l'ai jamais vu cela utilisé dans des scénarios beaucoup plus complexes (par exemple: afficher le contenu d'un répertoire, glisser-déposer, etc. appui) Par conséquent, la plupart du code que j'ai trouvé est assez compliqué.
Y at-il une solution plus simple pour remplir ce point de vue avec des données prédéfinies statiques, et juste permettre une sélection simple? En d'autres termes, je suis à la recherche de la fonctionnalité d'un bouton pop-up, mais une interface utilisateur.
Mise à jour: solution
je IKImageBrowser, comme l'a suggéré. Cette tutoriel a été très utile. Dans IB: Je viens de faire un IKImageBrowser dans mon interface, il Enveloppé dans une vue de défilement, et en a fait la source de données de l'objet du navigateur. Dans le code: mis en œuvre le protocole de source de données dans mon contrôleur comme le tutoriel EXPLIQUE, mis allowsMultipleSelection et allowsEmptySelection NO, a créé un objet image personnalisée en utilisant la représentation d'image URL exactement comme cela est 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 des curseurs de zoom et tels
La solution
Vous voulez IKImageBrowserView.