Verständnisfrage TableView

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

  • Verständnisfrage TableView

    Hallo,

    ich bin dabei, mit den TableViews zu experimentieren (XCode5, iPhone-App für den Anfang). Hintergrund ist, dass ich später komplexere Daten, die aber immer hierarchisch aufgebaut sind, in einer Listenansicht mit abschließender Detailansicht ausgeben möchte. Es kann aber vorkommen, dass einzelne Datensätze eine flachere Hierarchie haben als andere.

    Meine Frage, insbesondere zu Best-Practice-Erfahrungen:

    Brauche ich für jede (theoretische) Hierarchieebene einen ViewController? Das wäre unschön, weil ich mich in meiner Hierarchie beschränken würde und ich viele gleichartige ViewController hätte (die sich nur durch die Daten, die angezeigt werden sollen, unterscheiden). Oder reagiere ich auf das "Item ausgewählt"-Event und ändere die DataSource für meinen (einen) ViewController?

    Oder - in meinen Augen die eleganteste Variante - ich stecke meine Daten inkl. Hierarchie (XML, JSON, was auch immer) in den TableView und der "macht dann schon"? Dann bräuchte ich unabhängig von der Hierarchie meiner Daten nur zwei ViewController; einen für die TableView und einen für die Detailansicht. Geht das? Wie? Welche Anforderungen an die Datenstruktur muss ich beachten?

    Momentan ist mir die Datenübergabe noch recht egal; der zugehörige Webservice muss auch noch gebaut werden; insofern bin ich da im Format noch unbeschränkt - und ob ich auf dem Webservice XML oder JSON ausgeben lasse, macht den Kohl auch nicht fett.

    Beispiel für die Daten (E=Ebene - wird als Zeile im TableView ausgegeben: I=Item):

    Quellcode

    1. E1
    2. E2_0
    3. I1
    4. I2
    5. I3
    6. E2_1
    7. E3
    8. I4
    9. I5
    10. I6


    Vielen Dank für jeden Hinweis


    Marc
  • Jede Hierarchieebene sollte einen eigenen Viewcontroller haben. Die dürfen allerdings die gleiche Klasse haben. Von daher brauchst Du die Klasse nur einmal zu implementieren. Wenn eine oder mehrere Ebenen sich im Handling von den anderen unterscheiden, kannst Du für diese Ebenen auch Unterklassen anlegen, die die Abweichungen behandeln.
    „Meine Komplikation hatte eine Komplikation.“
  • du hast für deine TableView einen ViewController und für deine Detailansicht einen VieController
    wenn du eine Cell touched übergibst du dem DetailViewController das was er anzeigen soll

    und JSON vs. XML , mach es dir einfach und mach es mit JSON
    Ich weiß nicht immer wovon ich rede aber ich weiß das ich Recht habe. :saint:
  • oha, das geht ja fix hier. :)

    Allerdings widerspricht sich macmoonshines Ansatz "Jede Hierarchieebene sollte einen eigenen Viewcontroller haben" mit nussrattes "du hast für deine TableView einen ViewController und für deine Detailansicht einen VieController", oder habe ich da einen Knoten im Hirn?

    Der Sprung vom TableView in den DetailView ist das kleinste Problem.

    Wie gesagt, ich weiß nicht unbedingt genau, wieviele Hierarchieebenen meine Daten haben; wenn ich dafür jetzt jeweils einen eigenen ViewController bauen soll, hab ich ein Problem. Baue ich 6, kommen übermorgen Daten mit Hierarchieebene 7. ;)

    Muss ich die JSON-Daten App-seitig parsen und in verschachtelte Arrays umwandeln oder kann ich das JSON mehr oder weniger Plain an meinen DataSource-Controller reichen?
  • little Beagle schrieb:

    Wie gesagt, ich weiß nicht unbedingt genau, wieviele Hierarchieebenen meine Daten haben; wenn ich dafür jetzt jeweils einen eigenen ViewController bauen soll, hab ich ein Problem. Baue ich 6, kommen übermorgen Daten mit Hierarchieebene 7.

    Du kannst jeden (Table-)Viewcontroller aus dem Storyboard so oft laden wie Du willst. Das kannst Du den auch von jeder Hierarchieebene aus laden.

    Du kannst also mit einer Tableviewcontroller-Klasse und einem Storyboard-Viewcontroller eine beliebig tiefe Hierarchie realisieren.
    „Meine Komplikation hatte eine Komplikation.“