TableViews mit Storyboard unter OSX

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

  • TableViews mit Storyboard unter OSX

    Hi,
    ich stehe gerade mal wieder auf dem Schlauch. ?(

    Ich habe sonst hauptsächlich unter iOS entwickelt.
    Nun möchte ich aber unter OSX ein ganz einfaches Beispiel mit Tablleviews bauen und scheitere bereits daran.

    Unter iOS würde ich jetzt einfach Storyboard Projekt erstellen und dann einen UITableViewController in den View ziehen, dann eine entsprechende Klasse erzeugen und die Outlets verdrahten.

    Unter OSX gibt das gar keinen NSTableViewController sondern nur eine Klasse NSTableView.

    Und Storyboards unter OSX erwarten immer eine Klasse die vom ViewController erbt.
    Und nun?

    Wie bekomme ich nun das Outlet in die Klasse gezogen, die auch auf mit dem TableView reden kann?
    Denn wenn ich die Protokolle und Delegates einbinden will muss diese Klasse ja vom NSTableView erben oder? :cursing:
    Aber genau dann erlaut einem Xcode nicht ein Outlet oder eine Action zu ziehen. und eine Klasse die vom NSTableView erbt darf man nicht auswählen.

    Das kann doch nicht so schwer sein ein TableView in einem Storyboard unterzubringen.
    Mit einem XIB File kann man doch auch einfach ein Outlet ziehen....
  • Ganz ehrlich, den Nutzen von Storyboards in OS X habe ich nie so recht verstanden. Eine einigermaßen komplexe Anwendung lässt sich da m.E. schöner "von Hand" mit normales XiBs erstellen. Anders unter iOS, da ist eine typische UI "storyboard"-geeigneter. Aber das nur am Rande.

    Zur eigentlichen Frage: Eigentlich geht's so wie in iOS, Du hast eine NSTableView. Die erwartet eine NSDataSource und gegebenenfalls eine NSTableViewDelegate. Alternativ zur DataSource kannst Du die Tabelle auch mit Bindings füllen (Gibt's unter iOS nicht).

    Was man in den iOS-Tutorials oft sieht, ist ein UITableViewController, der gleichzeitig auch DataSource und Delegate ist. Ob das immer so toll ist, sei mal dahingestellt. Erstens bekommt man dadurch "fette" UITableViewController und zweitens kann es die Wiederverwendung von DataSource und Delegate verhindern. UI(NS)TableViewController gibt's in OS X nicht.

    Unter OS X ist das erstmal so nicht geläufig, das verwirrt Dich wahrscheinlich jetzt. Also, Du hast eine NSTableView. Dann überlegst Du Dir, wie Du die DataSource und den Delegate implementierst. Bindings würde ich erstmal aussen vorlassen. Wenn das klar ist, kannst Du die DataSource entweder direkt im NIB verbinden oder auch später z.B. in einem "windowDidLoad" von Hand setzen.

    Am besten schaust Du Dir mal ein Tutorial bzw. die Doku von Apple zum Thema NSTableView an, die ist eigentlich recht ausführlich

    ciao

    gandhi
  • Unter OS X kannst du zwar analog zu iOS vorgehen, allerdings würde ich eher einen NSArrayController verwenden. Dafür solltest du dich mit Bindings beschäftigen, die es nicht unter iOS gibt. Die einarbeitung geht nicht unbedingt flott, dafür bist du damit aber nachher viel produktiver. ;)
    „Meine Komplikation hatte eine Komplikation.“
  • Vielen Dank für die Antworten.
    Sie bringen mir zumindest noch Ideen in welche Konzepte ich mir noch anschauen muss.
    Einen NSArrayController würde aber vermutlich auch nicht die Probleme mit den Outlets in den Storyboards lösen oder?
    Würdet ihr dann lieber auf Storyboards verzichten? Die Geschichte mit den Seques und fand ich unter iOS ziemlich übersichtlich und einfach zu warten.