3

Dies ist eher eine philosophische Frage als alles andere, also gib mir deine Gedanken.UITabBarController UINavigationController Design-Tipp

Die iPhone SDK-Dokumentation legt fest, dass ein Tab-Controller möglicherweise einen Navigations-Controller enthält, aber ein Navigations-Controller keinen Tab-Controller enthalten kann. Anscheinend möchten Sie möglicherweise Ansichten in einer Ansicht, die Teil eines Navigationssteuerungsstapels ist, in Tabellenform organisieren. Ist das unvernünftig?

Ich akzeptiere, was Apple diktiert in diesen Bereichen als Evangelium, wie die HIG bietet Best Practices, die den Weg des geringsten Widerstandes zu offenbaren scheinen (ich bin sicher, dass es Ausnahmen gibt). Im Fall der Tab-Leiste bin ich mir jedoch nicht sicher, aus welchem ​​Grund das Design stammt. Vielleicht ist es für andere offensichtlich, aber ich kann mir keinen guten Grund vorstellen, warum Sie Tabs nur als root-level-View-Controller zulassen würden.

Was denken/wissen Sie? Welcher Designfehler würde das schaffen? Wie würden Sie dieses Problem lösen, wenn Sie eine tabellarische Darstellung von Ansichten in einer Ansicht wünschen? Muss ich das gesamte Design überdenken?

Danke.

Antwort

1

Ich kann sehen, woher sie kommen, aus einer Design-Perspektive. Tabbars fühlen sich verankert, konstant, wo Navbars sich dynamisch und veränderlich anfühlen. Daher ist eine Registerkarte mit dynamischem Inhalt sinnvoll, während sich ein einzelner Punkt in der dynamischen Hierarchie eines Navigationsstapels mit einer am unteren Bildschirmrand verankerten Registerleiste nicht als richtig anfühlt. Die Three20-Implementierung behandelt dies auf eine Weise, die mehr Sinn macht, indem die Registerkarten unterhalb der Navigationsleiste verankert werden, so dass sie sich eher als Teil dieser Position im Navigationsstapel fühlen.

Mit dem gesagt, Tweetie rollt seine eigene Tab-Leiste, wenn ich mich richtig erinnere, ohne eine UITabbarController um dieses Detail in den UI-Richtlinien zu umgehen, und es funktioniert völlig aus einer Interaktion Perspektive.

0

Ich denke, der Tab-Leiste-Controller soll der Hauptpunkt der Navigation um eine App sein, wenn es verwendet wird. Wenn ein Nav-Controller einen Tab-Controller enthält, werden die Tabs wechseln, wenn Sie an anderer Stelle navigieren, was für Benutzer, die es gewohnt sind, sie in anderen Apps zu verwenden, verwirrend sein kann. Ich denke, es ist eine coole Idee, aber Apple kann nicht auf die gleiche Weise fühlen.

1

Die kurze Antwort ist, dass es für den Benutzer verwirrend sein würde, UITabBars in einem Nav-Controller zuzulassen. Die App würde sich sicherlich nicht so verhalten, wie die meisten Nutzer erwarten würden. Aber das ist nur UITabBar, nicht das Design-Konzept von Tabs im Allgemeinen. Tabs in einem Nav-Controller sollten meiner Meinung nach ganz oben und nicht unten liegen, wie es bei einer UITabBar der Fall ist.

Es gibt ein paar verschiedene Möglichkeiten, dies zu tun.

Ich habe "Tabs" in einem Navigator-View-Controller gemacht, indem ich die erste Zeile in einer Tabellenansicht einen segmentierten Picker habe. (Siehe die HangTime-App im App Store). Ich denke, es funktioniert ziemlich gut, aber sie sind nicht wirklich "Tabs".

Joe Hewitt, der Typ, der die Facebook-App geschrieben hat, löste dieses Problem, indem er seine eigene "tab bar" -Ansicht und Controller erstellte, obwohl es anders als eine UITabBar gerendert wurde. Dieses Element ist über das Three20-Framework und die Open-Source-Bibliothek verfügbar. Überprüfen Sie es heraus: http://github.com/joehewitt/three20/tree/master