Comment créer NSCollectionView par programme à partir de zéro?
NSCollectionView
reste l'une des plus mystérieuses de l'API Cocoa que j'ai jamais vu. La Documentation est pauvre et il ya beaucoup de pièces mobiles, dont beaucoup sont souvent mis en œuvre dans Interface Builder, faisant de la documentation difficile.
Veuillez fournir un exemple de code pour créer le cas le plus simple de NSCollectionView
qui affiche les Champs de Texte ou des Boutons sans l'aide de Xcode où chaque Champ de Texte ou un Bouton a un Titre différent. Assumer un nouveau projet Xcode avec la valeur par défaut window
IBOutlet.
Pour cet exemple, aucune liaison n'est nécessaire pour mettre à jour le NSCollectionView comme la source de données change. Il suffit d'afficher une grille de prototypes d'objets et de configurer chaque objet du Titre d'une valeur.
Si on peut trouver un bon exemple de la façon de le faire à la disposition de beaucoup de gens, je pense que ça va aider tout le monde qui travaille avec NSCollectionViews
et est aussi perplexe que moi.
Sommaire de la demande
- Fournir un exemple de code pour rendre un NSCollectionView dans un nouveau projet Xcode
- Ne pas utiliser Interface Builder, utilisez la valeur par défaut de la fenêtre IBOutlet fourni
- NSCollectionView devrait contenir des Champs de Texte ou des Boutons, votre choix
- Chaque élément dans la vue doit avoir un Titre différent
- Aucune liaison n'est nécessaire
Si il y a un exemple de code qui répond à ces exigences, veuillez fournir un lien, ce serait sympa!
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr qu'il y a beaucoup de perspicacité dans la création d'une vue de collection par programme et sans fixations, mais ici il va.
Introduction
Il y a essentiellement quatre composants lors de l'utilisation de la vue d'une collection:
NSView
, responsable de l'affichage de l'information;NSCollectionViewItem
qui sert à la collecte d'éléments de prototype;Généralement un point de vue est conçu dans Interface Builder, et un modèle est médiée par Cocoa bindings.
De le faire par programmation:
Constantes
Vue
C'est une vue standard (un affichage personnalisé dans Interface Builder langage) contenant un bouton. Notez que la vue a taille fixe.
- Vue-Contrôleur (Prototype)
Normalement une-vue-contrôleur les charges de son point de vue à partir d'un fichier nib. Dans les rares cas où la vue contrôleur ne pas obtenir son point de vue à partir d'un fichier nib, le développeur doit l'envoyer
-setView:
avant-view
est reçu par le point de vue du contrôleur, ou de remplacer-loadView
. Le code suivant n'est la dernière.Vue contrôleurs de recevoir le modèle correspondant de l'objet via
-setRepresentedObject:
. J'ai surchargé, et ce, afin de mettre à jour le titre du bouton à chaque fois que le modèle objet de modifications. Notez que cela peut être accompli en utilisant le Cacao liaisons sans code.Noter que ce code est spécifique à la collecte de points de vue — c'est la vue générale de comportement du contrôleur.
Modèle
Un simple tableau de chaînes représentant les bouton de titres:
Vue De Collection
Jusqu'à présent, la seule relation qui a été établie est le point de vue (
BVView
) utilisé par l'élément prototype (BVPrototype
). La collection de point de vue doit être informée de ce prototype, il convient de l'aide ainsi que le modèle à partir de laquelle pour obtenir des données.Code Source complet de l'Application Délégué
collectionView.content
. Cependant,-setRepresentedObject:
est appelée avec un argument denil
. Ce qui peut se passer?@Bavarious
Vous avez fait un excellent travail. C'était juste un tutoriel étonnante qui j'ai parfois manquer à la Pomme Docs.
J'ai réécrit Bavarious' code Swift (v2) pour toute personne qui est intéressé:
//AppDelegate.swift:
//BVTemplate.swift:
//BVView.swift:
Pour répondre à brigadir la question sur la façon de se lier à une mutable tableau.
zéro-ième - faire des titres un
NSMutableArray
première lier le tableau de vos articles
Deuxième lors de la modification des titres, assurez-vous de modifier le proxy.
par exemple