NSTableView makeViewWithIdentifier über die Nibs hinweg

8

Ich habe eine ähnliche Frage zu Cocoa - View -Based NSTableView, mit einer Zelle in mehreren Tabellen , verstärkt von Apples eigene Dokumente für makeViewWithIdentifier:owner:

  

"Normalerweise ist Bezeichner in Interface Builder einer externen NIB zugeordnet, und die Tabellenansicht wird die NIB automatisch mit dem angegebenen Eigentümer instanziieren."

Dies deutet darauf hin, dass Sie die NSTableCellView in einer separaten Schreibfeder von der Schreibfeder mit der NSTableView speichern können sollten. In meinem Experimentieren konnte ich jedoch nur Zellen erhalten, die in der Tabellenansicht enthalten sind, die ich anrufe. Wenn ich beispielsweise meine Zelle ausschneiden und in eine neue .xib-Datei einfügen möchte, kann die Tabellenansicht sie nicht mehr finden. Was mache ich falsch oder ist das eigentlich unmöglich und ich lese Apple's Dokumente irgendwie falsch?

    
justin k. 04.06.2012, 20:10
quelle

2 Antworten

5

Verwenden Sie - (void)registerNib:(NSNib *)nib forIdentifier:(NSString *)identifier , um eine Schreibmarke zu registrieren, die mit einer Zellenkennung verwendet werden soll.

Wenn es nicht funktioniert, registrieren Sie wahrscheinlich die Schreibfeder, nachdem die TableView-Daten geladen wurden. Verwenden Sie [tableView reloadData] afterwords, um sicherzustellen, dass es sich nicht um ein Timing-Problem handelt.

    
Arlen Anderson 28.10.2012 23:59
quelle
3

Ich bin gerade auf dieses Problem gestoßen und ich denke, Sie können makeViewWithIdentifier: owner: nicht verwenden, wenn Sie eine dedizierte Nib zum Füllen von View-Based Tables verwenden.

Das Problem hat mit Dateibesitzern zu tun (dh View-Controller). makeViewWithIdentifier: Eigentümer: scheint mit "self" als Eigentümer für einfache benutzerdefinierte Ansichten verwendet zu werden.

Wenn Sie eine eigene Schreibfeder für die benutzerdefinierte Ansicht mit Steckdosen haben, benötigen Sie im Allgemeinen auch einen separaten View-Controller. Wenn Ihre benutzerdefinierte Ansicht über eine Steckdose verfügt und in der Tabelle viele benutzerdefinierte Ansichten angezeigt werden, auf welche Steckdose verweisen Sie dann vom Besitzer der "Self" -Tabellenansicht?

In meinem Test habe ich AppDelegate als Delegate / Datenquelle der Tabellenansicht. Ich habe eine CellView.xib und CellViewController.h / .m mit Ausgängen zur Schnittstelle. Dann habe ich in meiner tableView: viewForTableColumn: row: Delegate-Methode diesen Code:

%Vor%

Was Sie verlieren, ist die Wiederverwendung der Zelle, die automatisch mit makeViewWithIdentifier geschieht: owners :. Um dies selbst zu implementieren, müssen Sie wahrscheinlich auch die vielen von Ihnen erstellten View-Controller verwalten.

Ich könnte immer noch etwas vermissen, da ich nach Jahren, in denen ich nur iOS arbeite, zur Entwicklung von OS X komme.

    
Silromen 26.09.2012 18:59
quelle