2016-08-03 39 views
1

(Ich habe andere Fragen und Antworten zu diesem Thema lesen, aber die meisten sind sehr alt und beziehen sich nicht auf iOS 9 oder 10)iOS UINavigationController-ähnliches Verhalten in einem Teilbildschirmbereich (2016)

Die App Design erfordert, dass die obere Hälfte des Displays immer denselben Inhalt enthält. (Ein Bild, das vom Benutzer bearbeitet wird.)

Die untere Hälfte des Displays benötigt eine UITableView. Wenn ein UITableViewCell angezapft wird, muss der untere Abschnitt mit Slide-on-Animation zu einem neuen UIViewController wechseln, ähnlich wie UINavigationController Push-Segmente funktionieren.

Problem: nur die Ansicht von unten muss zu den neuen View-Controllern und wieder zurück wechseln. Die obere Hälfte der Ansichtshierarchie muss nicht beeinflusst werden. Aus diesem Grund kann ich nicht alles in eine UINavigationController platzieren, und ich kann keine UINavigationBar oben auf dem Bildschirm haben.

Frage: Welcher Ansatz sollte ich in einer solchen Situation, wo ich nur eine UIView Hierarchie müssen in Push-segue Art und Weise zu überführen, aber nicht etwas anderes? Vielen Dank.

mit Lösung Herausgegeben

Lösung folgt, die für entlang zu Hause folgen.

Storyboard layout

Result

Push Segue

+0

mit versuchen Sie das alles in einem Storyboard zu tun? das wäre einfacher, wenn es in Code geschrieben wäre. Sie könnten einfach die Ansichten der Ansichten von rechts-links oder links-rechts animieren –

Antwort

2

Ja, Sie können tatsächlich einen UINavigationController für die untere Hälfte verwenden.

Wenn Sie Storyboards verwenden, ist der einfachste Weg, dies zu tun, um eine Container Ansicht für jeden Teil des Bildschirms zu verwenden, die Sie dann ein UIViewController in für den oberen Teil und ein UINavigationController in für den Boden einbetten Teil. Wenn Sie dies programmgesteuert tun, fügen Sie einfach die View-Controller als untergeordnete View-Controller zum ersten View-Controller Ihrer App hinzu (siehe this answer für mehr Informationen), was das Storyboard für Sie automatisch bei Verwendung einer Container-Ansicht erledigt.

Als untergeordnete Ansicht Controller wird der UINavigationController unabhängig von der oberen UIViewController und sollte wie erwartet verhalten.

Ich empfehle den programmatischen Ansatz aus den folgenden Gründen:

  • Es hilft Sie, das Innenleben Kind/Eltern View-Controller viel besser zu verstehen, die Ihnen wahrscheinlich eine erhebliche Menge an Debug-Zeit auf der ganzen Linie sparen.
  • Es macht Hinzufügen/Entfernen/Vertauschen von Kind View-Controller so einfach wie ein paar Zeilen Code. Der Versuch, dies mit Storyboards zu tun, ist notorisch hacky und umständlich.
  • Es ist viel einfacher, den Überblick über Änderungen GIT (die meisten mittelgroßen/größere Unternehmen tatsächlich Storyboards aus diesem Grund verbieten)
+1

Vielen Dank, und danke auch an die anderen Befragten! Ihrem Rat folgend, habe ich es geschafft, das Design mit zwei Containeransichten zu arbeiten, mit einem UINavigationController im zweiten Container, der die UI einbindet, die ich brauche. Großer Beifall! – Womble

+0

Ich werde auch Ihren Vorschlag über die Arbeit in Code mehr untersuchen, anstatt Storyboards zu verwenden. Prost. – Womble

1

Sie können mehrere Ansichten in einem View-Controller verwenden und können Animationen wie Push oder Pop geben, um sie ein- oder auszublenden.

Zweite Ansatz ist, können Sie Container View verwenden, die genaue Wirkung wie Navigation Stack geben wird.