Frage

In meiner app, ich habe eine NSOutlineView, der seine Daten von einem NSTreeController bekommt -., Die wiederum aus dem Core Data-Modell erhält

Was möchte ich jetzt zu tun ist, Gruppenüberschriften hinzufügen und vielleicht einige zusätzliche Zeilen in die Gliederungsansicht - offensichtlich Dinge, die außerhalb des Modells existieren sollten und ein Teil der Ansicht sein. Aber, so viel wie ich den Kopf über diese kratzen, kann ich nicht von irgendeiner Weise denken, die Gliederungsansicht Anzeige, diese Dinge zu machen, ohne das zugrunde liegende Modell zu modifizieren, was offensichtlich eine große no-no.

Ihre Hilfe wird sehr geschätzt. Ich fühle mich wie ich bin fehlt etwas offensichtlich hier ...

War es hilfreich?

Lösung

Was würden Sie hier tun, ist eine benutzerdefinierte NSTreeController Unterklasse zu schreiben. Hier ist, warum dies der ideale Ort, um die Änderungen, die Sie tun mögen:

  • Es ist nicht im Modell, wie Sie gesagt haben.
  • hat nichts mit dem Blick zu tun -. Vollständig transparent
  • Im Grunde, was Sie wollen, ist angezeigt Daten aus gespeicherten Daten zu erstellen. <- das ist die Aufgabe des ist Controller

Die Controller Klassen in Cocoa Zum Glück sind sehr leistungsfähig und sehr einfach in dem gleichen diesem. Für Sie sollte es genug sein, um die -arrangedObjects Methode. Wiederverwendung der Default-Implementierung, da es eine Menge nützlicher Dinge tut wie Prädikate Anwendung oder Sortieren. Hier ist, wie dies aussehen könnte:

- (id)arrangedObjects {
  id root = [super arrangedObjects];

  // "root" is something like a NSTreeNode but not quite yet
  NSTreeNode *newRoot = [NSTreeNode treeNodeWithRepresentedObject: nil];
  [[newRoot mutableChildNodes] setArray: [root childNodes]];

  // Do your customizations here

  return newRoot;
}

Das zurückgegebene Objekt ist von der Klasse NSTreeNode -. in der Dokumentation sehen, wie Änderungen zu tun

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