NSTableView - wie kann ich die Daten einbinden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • NSTableView - wie kann ich die Daten einbinden

    Guten Abend zusammen

    Ich beschäftige mich seit ca. einer Woche mit Swift. Mithilfe von "The Swift Programming language" bin ich schon sehr weit gekommen. Bis jetzt habe ich alle Beispiele im Playground erstellt.

    Der nächste Schritt ist jetzt eine OSX APP zu schreiben, bei der ich die Übungen einarbeiten will.

    Im Storyboard habe es bis jetzt schon geschafft, Labels, Cells und Buttons zu erstellen und mit Text zu füllen.

    Nun steht das nächste an: Eine Tabelle mit einem Array zu verknüpfen. Vermutlich frage ich in den Suchmaschinen falsch, aber eine einfache schlüssige Erklärung habe ich bis jetzt nicht gefunden.

    Irgendwie stehe ich ein bisschen auf dem Schlauch. Kann mir jemand sagen wo ich eine Dummy-Proof Anleitung finden kann?

    Danke im Voraus

    Christoph
  • Deiner NSTableView wird ein DataSource-Objekt zugewiesen: Von diesem werden bestimmte - vordefinierte - Methoden aufgerufen, um die Tabelle zu füllen, vor allem die Zeilenanzahl. Man sagt dazu, dieses Objekt muss das Protokoll NSTableViewDataSource erfüllen, Informationen findest Du hier.

    Häufig ist das NSTableView-Objekt seine eigene DataSource, aber das muss nicht sein. Ergänzend gibt es auch noch das NSTableViewDelegate-Protokoll, das z. B. die Zellen liefert.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Wesentlich weniger Code weniger Code und mindestens genauso viel Flexibiltät, wenn nicht sogar mehr, bietet der klassische Weg über einen Array-Controller und Bindings. Der Array-Controller bietet von Haus aus so nette Dinge wie Sortieren und Selektieren. Es braucht aber ein bisschen Übung und Geduld, bis man die Binding-Logik verinnerlicht hat. Das lohnt sich aber auf jeden Fall.

    Die generellen Schritte (View based):
    1. Array-Controller-Objekt in der Szene des Tableviews auf der obersten Ebene anlegen.
    2. Im Identity-Inspektor des Array-Controllers die Klasse der Elemente festlegen.
    3. Im Bindings-Inspektor Content Array auf das Array mit den Elementen im View-Controller binden.
    4. Im Bindings-Inspektor des Tableviews Content auf das Array mit den Elementen im View-Controller binden.
    5. Die Views in der Tabellenzelle können jetzt über Bindings ihre Werte über die Property objectValue des Table Cell View binden.
    Letzteres wirkt sogar in beide Richtungen, Country und Western bzw. Lesen und Schreiben. Mit einer Datenquelle muss eine alte Omma dafür ganz schön lange tippen.

    BTW: In Swift musst du bindbare Propertys als @objc dynamic deklarieren.
    „Meine Komplikation hatte eine Komplikation.“