An Controller kommen

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

  • An Controller kommen

    Gibt es ne Möglichkeit zur Laufzeit an einen Controller (NSObject) zu kommen, ohne ein Outlet darauf zu setzten?
    Also ich bräuchte sowas wie [NSApp delegate]
    Hintergrund ist der, dass ich zum einen flexibel sein will und zum anderen nicht zwei Controller gegenseitig mit nem Outlet binden will.
    Der Nachrichtenfluss geht gegenseitig von einem zum anderen Controller.

    Es gibt einen MainController der ein Array hält welches immer die aktuellen Daten der gesamten App hat.
    Dann gibt es z.B. einen WidthCotroller der Zugriff auf den MainController braucht um an das aktuelle Element im Array heran zu kommen.

    Der MainController braucht wiederum Zugriff auf den WidthController um dort Daten zu holen.

    Klar geht das alles wenn ich gegenseitige Outlets setzte, den MainController würde ich aber gerne ohne Outlet ansprechen.

    Ne allerletzte Möglichkeit wäre ein Singleton.
  • Das Problem das du hast ist, dass Du Dich nicht an MVC hälst. Ein Controller hat keine Daten zu haben. Die hat das Modell. Das bedeutet Du packst erstmal dein Array mit den Daten in eine eigene Klasse (oder mehrere Klassen). Diese kannst du dann im einfachsten Fall im AppDelete instanzieren und in jedem Kontroller der sie braucht über das AppDelegate holen. Noch feiner wäre es natürlich wenn die Daten z.B. in den UserDefaults, einer Plist oder gar CoreData liegen würden und sich jeder Kontroller eine eigene Modellklasse instanzieren kann, welche sich dann die Daten nach Bedarf dort heraus holt.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Prinzip hast du Recht, ein Controller hat aber schon Daten (bzw. er weiß davon) woher sonst soll er wissen was er an das View weitergeben soll ;)
    Ich weiß aber was Du meinst. Im Prinzip hat der MainController nur ein Array dort stecken meine Daten drin.
    Was ich machen könnte wäre Properties im MainController zu implementieren die das Array (bzw. die Daten darin) manipulieren. Das wäre
    sicherlich der "richtigere" Weg, das Problem, ich hab knapp 200 Properties und da wird das schnell unübersichtlich.

    Danke aber für den Denkanstoß!
  • Ansonsten halt den Master/Detail Ansatz: arraycontroller, weiterer controller der an die selection vom AC gebunden ist. Wenn Du den Detailkontroller noch weiter kapseln möchtest, pack ihn in ein eigenes xib und binde dort an die representedObject-property von NSViewController. Die wiederum hängst Du an die selection vom AC.
  • Ne ic

    Markus Müller schrieb:

    Ansonsten halt den Master/Detail Ansatz: arraycontroller, weiterer controller der an die selection vom AC gebunden ist. Wenn Du den Detailkontroller noch weiter kapseln möchtest, pack ihn in ein eigenes xib und binde dort an die representedObject-property von NSViewController. Die wiederum hängst Du an die selection vom AC.

    Ne ich war so blöd das Model händisch ändern zu wollen, obwohl es per Binding verknödelt war, ist mir von vorne herein schon spanisch vorgekommen :huh: