Frage

In meinem Setup habe ich eine NSCollectionView von Volumes mit dem Mac verbunden. Für die Ansicht des NSCollectionViewItem habe ich eine NSBox mit einem NSTableView innerhalb der Inhalt dieses Volumens auflistet.

Mein Problem kommt, wenn sie versuchen Hinzufügen / Entfernen Elemente in die NSTableView. Die NSBox scheint einmal initialisiert zu werden, so gibt es nur eine NSTableView. Dies bedeutet, dass, wenn ich die Daten innerhalb des NSTableView ich aktualisieren möchten nicht reload auf IBOutlet anrufen und haben sie alle die Tabellen aktualisieren.

Wenn ich eine IBOutlet in einer Unterklasse der NSBox schaffen, ist es Null für die Instanz, so dass ich es über das nicht nennen kann.

Die nächstgelegene ich gekommen bin, ist durch einen @try @catch um den Code umschließt, dass kehrt sich das Objekt in einer Zeile in einer Spalte, eine Ausnahme tritt auf, weil das Element nicht mehr vorhanden ist, so dass ich die Tableview greifen und rufen reload, die scheint, dass bestimmte NSTableView zu aktualisieren.

Das Problem dabei ist, dass, wenn das Element am Ende der Tabelle entfernt ist, oder wenn ein Element hinzugefügt wird, wird nicht die Ausnahme auftreten, da es all vorhandenen Elemente sehen.

Hat jemand auf einem NSCollectionViewItem anzeigen keine Erfahrung mit einem NSTableView hatte? Wie haben Sie die Tabellen aktualisieren?

War es hilfreich?

Lösung

Setzen Sie die NSBox (mit seinem NSTableView) in seine eigenen Feder. Jedes Mal, wenn Sie eine neue Kollektion Ansicht Element zu erstellen, laden Sie die Feder, Satz, dass NSBox als die Sammlungsansicht Artikel Ansicht und lassen Sie die NSBox.

Wie für die Tabellenansichten Fütterung, der einfachste Weg ist wahrscheinlich Bindungen. Bind jede Spalte der Tabelle im Hinblick auf eine unterschiedliche Eigenschaft des Modellobjekts, das die Sammlung Ansicht Element darstellt. Sie wollen wahrscheinlich durch einen Array-Controller gehen, natürlich, die mittels einer von denen pro Artikel Sammlung Ansicht mit, und sie zu einem Array hinzufügen, die Sie in dealloc freigeben werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top