UITableView / static vs dynamic / bessere Entscheidung ?

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

  • UITableView / static vs dynamic / bessere Entscheidung ?

    Hallo zusammen,

    dies ist mein erster Post hier, also erst einmal ein Hallo an alle die mitlesen :)

    Ich habe die Suchfunktion schon bemüht, bin jedoch nicht ganz fündig geworden.

    Ich habe zur Zeit folgendes "Problem":

    Ich übergebe ein Objekt an einen ViewController und würde gerne in einer Tabelle dem Nutzer Informationen anzeigen. Nun kann man ja diese Zellen dynamisch generieren lassen oder statisch Werte zuweisen.
    Die Zellen sind jeweils ziemlich einfach gestaltet, ähnlich der Settings in iOS. Also links die Bezeichnung - rechts der Value (siehe z.B. WLAN in den iOS Einstellungen).

    ------------------------------------------
    | Bezeichnung Wert |
    ------------------------------------------

    Da ich ja nur die Werte der Properties erreichen kann, wie löst man das am besten mit den Bezeichnungen in der Zelle ?
    Wenn ich die Zelle auf dynamic content einstelle, wie löst man das am besten mit den Bezeichnungen ?
    Man könnte ja theoretisch einen Array generieren und die Werte jeweils zuweisen?
    Wie löst man das am besten bei Mehrsprachigkeit ?

    Wenn ich auf static content stelle, kann ich einfach die Bezeichnung mit Labels erzeugen und dasselbe mit den Werten tuen ?
    Wie sieht das aus mit dem TableViewDelegate und dem ViewController?

    Hat wer einen "best practice" Tipp ?


    Falls es hierzu schon eine Diskussion / einen Thread gibt, verlinkt diesen bitte. Das wäre nett :D

    Ich hoffe ich kann euch meine App bald im Showcase vorstellen, habe dort schon einige interessante Apps gesehen, die mir wirklich gefallen haben :thumbup:
  • Mac & i Test Abo
  • Wenn du immer die gleichen Zellen anzeigen willst, verwende einen statischen Tableviews. Auf die Labels und ggf. anderen Viewelements greifst du über Outlets zu. Ist die Anzahl und/oder Reihenfolge der Zellen abhängig vom Inhalt nimmst du einen dynamischen Tableview. Da setzt du die Werte in tableView:cellForRowAtIndexPath:. Wenn du Standardzellen verwendest, gibt es entsprechende Propertys. Bei selbstgebastelten Zellen verwende ich gerne eigene Klassen für die Zellen und greife auf die enthaltenen Elemente über Outlets der Zellenklasse zu.
    „Meine Komplikation hatte eine Komplikation.“
  • Danke für eure schnellen Antworten. Habe mich für die statische TableView entschieden, da diese Lösung, meines Erachtens nach, in dem Fall das beste und zugleich simpelste ist.

    Habe es jetzt auf folgende Weise gelöst, nachdem ich diesen Fehler bekommen habe :
    "Main.storyboard: error: Illegal Configuration: Static table views are only valid when embedded in UITableViewController instances".

    1. Drag a ViewController onto your storyboard.
    2. Drag a TableViewController onto your storyboard.
    3. Next Drag a Container view to your ViewController and size it about the size you want (smaller than the view) -> when you drag the container view it will create a segue and another view. Remove that segue and view.
    4. Then finally ctrl click in your container and drag to your new TableViewContoller. Select Embed.
    5. Style your TableView the way you want -> including static cells.


    Quelle: howwaydo.com/static-table-view…de-uitableviewcontroller/

    Ist wahrscheinlich nicht die Eleganteste Lösung, aber funktioniert für das erste :)
  • Mein ewiges Credo an dieser Stelle: Hast Du verstanden, was Du dort tust? Ich habe nichts gegen die Verwendung von Snippets und Tutorials, aber man sollte sich m. E. über den Sinn und Zweck jeder Code-Zeile (oder IB-Aktion) im Klaren sein. Andernfalls beißt einen das kurz über lang in den Hintern.

    Mir zumindest ist bei Deiner o.g. Beschriebung nicht klar, warum die UITableView in eine ContainerView eingebettet wird...

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • W0RLDB47ANCE schrieb:

    Danke für eure schnellen Antworten. Habe mich für die statische TableView entschieden, da diese Lösung, meines Erachtens nach, in dem Fall das beste und zugleich simpelste ist.

    Habe es jetzt auf folgende Weise gelöst, nachdem ich diesen Fehler bekommen habe :
    "Main.storyboard: error: Illegal Configuration: Static table views are only valid when embedded in UITableViewController instances".

    1. Drag a ViewController onto your storyboard.
    2. Drag a TableViewController onto your storyboard.
    3. Next Drag a Container view to your ViewController and size it about the size you want (smaller than the view) -> when you drag the container view it will create a segue and another view. Remove that segue and view.
    4. Then finally ctrl click in your container and drag to your new TableViewContoller. Select Embed.
    5. Style your TableView the way you want -> including static cells.


    Quelle: howwaydo.com/static-table-view…de-uitableviewcontroller/

    Ist wahrscheinlich nicht die Eleganteste Lösung, aber funktioniert für das erste :)
    Sehe ich wie @MyMattes

    Kannst du dir komplett sparen, indem du einen UITableViewController nimmst und in Schritt 1 verwendest.

    Ah im Titel steht auch schon Static table view outside UITableViewController


  • MyMattes schrieb:

    Mein ewiges Credo an dieser Stelle: Hast Du verstanden, was Du dort tust? Ich habe nichts gegen die Verwendung von Snippets und Tutorials, aber man sollte sich m. E. über den Sinn und Zweck jeder Code-Zeile (oder IB-Aktion) im Klaren sein. Andernfalls beißt einen das kurz über lang in den Hintern.

    Mir zumindest ist bei Deiner o.g. Beschriebung nicht klar, warum die UITableView in eine ContainerView eingebettet wird...

    Mattes
    Verstanden was ich da tue, habe ich. Sofern man das eben selbst einschätzen kann. Also Container erzeugen und diesen mit einem anderen View ersetzen, kenne ich ganz gut aus Android, dort gibt es ein ähnliches Prinzip. Das habe ich so in iOS erst mit SWRevealController umgesetzt. Da ist das jedoch kein Container.

    Ich habe das eingebettet, da ich auf meinem ViewController noch andere Elemente habe und die Tabelle zwischen zwei Elementen angezeigt werden soll.

    Ob das so mit einem TableViewController funktioniert habe ich noch nicht getestet. Leider hat das "Umbauen" meines ViewControllers in einen TableViewController ( Um die statische Tabelle anzeigen zu können) im oben zitierten Fehler geendet.