TabView vs. View Wechsel, Datenaustausch zwischen Controllern

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

  • TabView vs. View Wechsel, Datenaustausch zwischen Controllern

    Ich habe gerade etwas den Überblick verloren ?( und bräuchte etwas Hilfe, um meine Gedanken zu sortieren. Vorab eine kurze Erläuterung was ich gerade mache.

    Das Programm liest Daten aus verschiedenen Dateien ein. Alle Daten werden letztlich in einer zentralen Klasse, ich nenne sie mal "ClassData", verwaltet und gespeichert.
    In meinem AppController läuft zZ alles zusammen d.h. hier habe ich eine Action-Methode, die einen File-Dialog öffnet und dann eine Instanz von "ClassData" anlegt
    und alle Dateien/Daten einliest. Soweit so gut, jetzt zu meinen Fragen.

    Ich habe geplant die Daten in einer TabView mittels TableView anzuzeigen, wobei ich in einem zweiten Schritt auf die Tabs verzichten will und die Umschaltung
    über eine separate SourceView mit den Dateinamen realisieren will.

    Frage A: Macht das so Sinn, oder wäre es u.U. besser das ganze über ein View-Switching ohne TableView zu realisieren ?
    Frage B: Sollte man jeder View einen eigenen Controller gönnen ?
    Frage C: Sollte man die TableViews mit den Controllern auslagern d.h. ein separates xib-File anlegen ?

    Hieraus ergibt sich dann auch noch eine weitere Frage D: Wie greife ich am sinnvollsten von den einzelnen "ViewControllern" auf die Daten im AppController (-->iVar ClassData) zu ?

    Sind vielleicht alles banale Fragen, aber mir fehlt einfach die Erfahrung, wie man so etwas sauber strukturiert - ich denke mal für so einen "klassischen" Fall gibt es
    sicherlich bewährte "Kochrezepte", die man ggf. anpassen bzw. erweitern kann.

    Gruß
    Vertex
  • Frage D: Das funktioniert über Propertys.

    Das sind diese Dinger
    in der .h im interface

    Quellcode

    1. @interface MeinDatenController : UIViewController{
    2. NSString *websiteURL;
    3. }
    4. @property (nonatomic,retain) NSString * websiteURL;


    und in der .m

    Quellcode

    1. @synthesize websiteURL;

    Wenn Du dann die .h in einer anderen Klasse importierst, hast Du Zugriff auf meinDatenController.websiteURL
  • zweimenschen schrieb:

    Frage D: Das funktioniert über Propertys.
    Da gibt es nur ein Problem, ich brauche eine Instanz der "ClassData", um auf die iVars zugreifen zu können - aber Du hast mich
    in die richtige Richtung geschupst, ich hab es jetzt mittels [NSApp delegate] gelöst. Ich merke immer wieder, dass ich mit
    den OOP-Konzepten noch nicht so richtig warm geworden bin :whistling:

    Markus Müller schrieb:

    Wenn Du für jede view einen eigenen Controller (und zugehöriges xib) benutzt, hast Du eine klare Kapselung, Zuständigkeiten und besser wartbaren Code (z.B. ist es dann viel einfacher, zu einem späteren Zeitpunkt ein weiteres view hinzuzufügen).

    Also ja, teile es auf mehrere Controller auf.
    Ich habe erstmal alles in einem Controller gebündelt, aber ich werde es noch aufteilen, da es einfach zu unübersichtlich wird. Darüber hinaus stelle
    ich gerade fest, dass man zwangsläufig sehr viel "doppelten" Code erzeugt für vergleichsweise wenig Funktionalität. Ich denke ich werde über kurz
    oder lang auf Bindings umstellen - aber zum Üben ist es so besser :)

    Danke für Eure Hinweise.

    Gruß
    Vertex