Frage

Ich beginne meine erste ausgewachsene Cocoa-Anwendung, die eine Ansicht zu entwickeln, die ich (und sehen) ähnlich Automator AMWorkflowView verhalten möchte.

Die grundlegenden Funktionen, die ich mag erreichen:

  • Positionierung von Subviews
  • Anzeige Subviews in erweitert / geschlossen Staaten
  • Mehrfachauswahl
  • Drag & Drop

Um Cocoa zu gewöhnen, begann ich mit einem benutzerdefinierten NSView, die hauptsächlich als Container für die benutzerdefinierte Subviews bedient und behandeln ihre Positionierung und Mehrfachauswahl. Die Subviews sind auch Subklassen von NSView und enthalten eine variable Menge von Ansichten selbst, wie Knöpfe, Etiketten und Popup-Menüs und können daher unterschiedliche Höhen aufweisen. Das funktionierte ganz gut, aber vor sich ging, ich möchte sicherstellen, alles zu haben, ordentlich und sauber nach dem MVC-Muster.

Ich vermute, dass es bereits eine Klasse in Cocoa ist, die die Umsetzung einer Ansicht Behälter erleichtert, wie vielleicht NSCollectionView. Es scheint, dass es keine (leicht) Weg unterschiedlich große Ansichten in einem NSCollectionView anzuzeigen, though. Sollte ich weiterhin meine Gewohnheit NSView Umsetzung (wahrscheinlich eine NSArrayController für die Auswahl und Sortierung Unterstützung verwendet wird), oder gibt es bessere Wege zu gehen?

Jede Hilfe ist sehr geschätzt

War es hilfreich?

Lösung

Leider ist die Antwort werden Sie Ihre eigene Rolle haben. NSCollectionView erlaubt keine variabler Größe Elemente (die auch erweitert / geschlossen Staaten ausgeschlossen ist).

Für eine begrenzte Anzahl von Elementen, können Sie dies erreichen ziemlich leicht (Sie brauchen nur einen Container Ansicht, dass anordnet richtig die Subviews, wenn sie das Layout gefragt, dann müssen Sie sicherstellen, dass Sie wieder das Layout, wenn die Dinge ändern). Für viele Subviews jedoch müssen Sie darauf achten, so effizient wie möglich zu sein. Dies kann mit Auslegen so wenig wie möglich (nur solchen „nach“ der Größe veränderten Ansicht, zum Beispiel) und erhält so komplex wie das Caching eine visuelle Darstellung eines Prototyp Ansicht, zeichnen die im Cache gespeicherten Bilder (schnell!) Für alle beginnen, aber die Aussicht bearbeitete und nur mit / einen „echten“ Blicks für die Ansicht Positionierung bearbeitet wird.

Drag & Drop funktioniert genauso wie es immer, aber keine der oben genannten Konten für die hübsche Animation NSCollectionView gibt Ihnen. :-) Es ist schnell und schön animiert genau weil alle die Subviews einheitlich sind (so die Layout-Berechnungen sind schnell und einfach). Sobald Sie unregelmäßige Größen hinzufügen, wird das Problem deutlich erschwert.

In der unteren Zeile. Wenn Sie variabler Größe Ansichten, NSCollectionView wird nicht funktionieren und Sie müssen Ihre eigene Rolle oder einer anderen Person geteilt Code, aber die Leistung und schöne Animation wird nicht leicht finden

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