Question

Dans ma configuration, j'ai un NSCollectionView des volumes connectés au Mac. Pour la Vue du NSCollectionViewItem J'ai un NSBox avec un NSTableView intérieur listant le contenu de ce volume.

Mon problème vient lorsque vous essayez d'ajouter / supprimer des éléments à la NSTableView. Le NSBox semble être initialisées une fois, il n'y a qu'un seul NSTableView. Cela signifie que lorsque je veux mettre à jour les données contenues dans la NSTableView Je ne peux pas appeler reloadData sur un IBOutlet et l'ont mise à jour toutes les tables.

Si je crée un IBOutlet dans une sous-classe de la NSBox, il est nul pour l'instance, donc je ne peux pas l'appeler par cela.

Le plus proche que je suis venu est en enfermant un @catch de @try autour du code qui renvoie l'objet à une ligne dans une colonne, une exception se produit parce que cet élément n'existe plus, donc je peux saisir l'tableView et appeler reloadData, qui semble mettre à jour cette NSTableView spécifique.

Le problème est que si l'élément supprimé est à la fin de la table, ou si un élément est ajouté, l'exception ne se produira pas car il peut voir tous les éléments existants.

Quelqu'un at-il eu une expérience avec un NSTableView sur View un NSCollectionViewItem? Comment avez-vous mettre à jour les tables?

Était-ce utile?

La solution

Mettre le NSBox (avec son NSTableView) dans sa propre plume. Chaque fois que vous créez un nouvel élément de vue collection, charger la plume, ensemble qui NSBox comme point de vue de la vue collection élément et libérer le NSBox.

En ce qui concerne l'alimentation des vues de table, le plus simple est probablement Manchettes. Lier chaque colonne de la vue de la table à une autre propriété de l'objet de modèle que la vue collection élément représente. Vous aurez probablement envie de passer par un contrôleur RAID, bien sûr, ce qui signifie avoir un de ceux par vue collection élément, et de les ajouter à un tableau, que vous relâchez dans dealloc.

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