Ich weiß nicht, Wann ich das nutzen sollte, Navigation Controller anstelle der Verwendung segue mit normalen View Controller?
Und wenn segue, was der Unterschied zwischen Modal-und Push-segue?
Kurze Antwort: mit einem Navigations-Controller mit "show" leitet über nur zu implementieren, DRILL-DOWN-Verhalten.
Beispielsweise
Navigation Controller → Autoren → Bücher → Buch
Für jede Ebene unter der "root" (Autoren), der Navigation-Controller automatisch fügt der Titelleiste und zurück-Taste. Also auf Bücher, die zurück-Taste wird automatisch mit dem Namen "<Autoren".
Den child-View-Controller muss verbunden werden mit SHOW leitet über -- show leitet über sagen Sie den Navigation-Controller "dies ist ein Eltern-Kind-Beziehung" und führen die erwarteten slide-in-aus-der-rechts-übergang. (Springen außerhalb der Hierarchie, zum Beispiel, die Bücher → Login, verwenden Sie ein modal-segue statt.)
Dem root-View-Controller verfügt über eine Navigationsleiste, können Sie weitere Schaltflächen, aber child-View-Controller nicht, weil es automatisch Hinzugefügt.
FoodTracker Beispiel
Nun die merkwürdig anmutende Anordnung der FoodTracker tutorial in apples Start der Entwicklung von iOS Apps (Swift) erklärt werden kann. **Was ist mit dem zweiten verschachtelten Navigations-Controller? Es ist nur eine einfache Liste der Mahlzeiten: Tippen Sie auf eine Mahlzeit, um zu zeigen, dass es in Essen Detail, oder Tippen Sie auf Hinzufügen und Mahlzeit Detail wird Hinzufügen Mahlzeit.
Den ersten Navigation-Controller macht Meine Mahlzeiten die Wurzel des drill-down-Hierarchie für eine beliebige Anzahl von Ansichten "schob" Sie von dort aus (es ist keine weitere Navigation-Controller benötigt werden, nur das zu tun).
Aber, Mahlzeit Detail, sowohl für die Anzeige einer vorhandenen Mahlzeit und das hinzufügen einer neuen Mahlzeit. Hinzufügen eines neuen Mahlzeit, Abbrechen und Speichern " - buttons werden benötigt. Die zweite Navigations-Steuerung ermöglicht es, die Tasten Hinzugefügt werden (siehe 3. Punkt oben), indem Sie Mahlzeit Detail eine Wurzel.
Anzeige eine bestehende Mahlzeit ist ein push-segue, aber das hinzufügen einer Mahlzeit ist ein modal-segue (eine neue Mahlzeit ist kein drill-down). Das ist wichtig: der Grund, Hinzufügen Mahlzeit kann man nicht einfach geschoben ist, dass das automatische zurück-Taste ("< Meine Mahlzeiten") wird mehrdeutig: ist es speichern oder Abbrechen?
Weil "navigation" und "push" sind sehr Allgemeine Begriffe, und weil es nett ist, kostenfrei einen zurück-button, es ist verlockend zu glauben, Navigation-Controller sind zu gehen, von irgendwo nach irgendwo, aber das Verhalten ist bestimmt nur für hierarchische traversal.
(Dies ist eine alte Frage, aber ich war auch verwirrt über das, wie eine iOS-n00b und wie die OP hatte ich immer noch Fragen stellen.
Persönlich mag ich Ihre Antwort mehr als das akzeptiert man. Mit konkreten Beispielen, es ist sehr leicht zu verstehen.
Dies ist sehr hilfreich in der Tat. Es macht einen viel der Dinge rund um die navigation-Controller, mehr klar - vielen Dank!
Sehr hilfreich!!! Ich war unter dem Eindruck, den Nav-Controller wurden überall eingesetzt werden. Das spart mir eine Menge Kummer.
In meiner Erfahrung, es gibt keine Allgemeine Regel, um zu entscheiden, diese Art von Dingen kommt es auf die usability Ihrer zukünftigen App...
Navigation-controller hilft dem Benutzer, sich daran zu erinnern, wo Sie sind, in jedem moment, und wie Sie können gehen Sie zurück, konnte aber nicht das beste, was zu verwenden, wenn Sie haben zu viele Ebenen... Und mehr wichtig, wenn Sie einen NavigationController oder ein TabBarController, Sie haben eine Klasse, zugänglich von allen anderen ViewControllers, wo können Sie die Allgemeinen Funktionen oder Daten...
Den Unterschied zwischen dem modal-und push-segue ist, dass in der ersten werden Sie immer wieder in das übergeordnete ViewController, weil Sie nur zeigen, neue Informationen an den Anfang, während im push-Sie ersetzen nur einen ViewController mit anderen...
Kann u geben Sie ein Beispiel-oder demo-Projekt ? Thank u !
Zum Beispiel, stellen Sie sich vor, Sie haben ein typisches Projekt mit Authentifizierung und das sollte halten Sie eine Verbindung öffnen, dann könnte eine gute Idee sein, speichern Sie diese Verbindung als eine Eigenschaft in der NavigationController besser, als durch es durch die verschiedenen UIViewControllers das wäre erscheinenden...
Können Sie erklären, mehr tief ?
Welches Teil benötigen Sie?
Ich wollte die Anzeige einer Tabelle (ex-Autoren), wenn Sie Tippen Sie auf eine Zeile, die es durchwandert haben, um eine neue Tabelle (ex-Büchern). Und verwenden Sie storyboard ! Wie Mach ich das ?
Sie sollte stick, um die "Model - View - Controller" - Paradigma... Zum Beispiel: in der ersten UITableViewController, wenn eine Zeile ausgewählt ist, sollten Sie implementieren "didSelectRow" und führen Sie die segue programmgesteuerten festlegen der Autor für die neue UITableViewController in "prepareForSegue". Dann, wenn der Autor erhielt in den neuen UITableViewController, sollten Sie sich die Liste der Bücher und aktualisieren Sie Ihre tableView...
Dieses Schema ist ziemlich Häufig, was ich Vorschlage, ist, dass Sie Speicher in der NavigationController die Instanz, die Sie verwenden würden, um die Liste von Autoren oder Büchern, und in jedem Controller, der angezeigt wäre, müssten Sie den Zugriff auf diese Instanz statt der übergabe, obwohl der Controller...
Verwenden Sie Navigations-Controller, wenn Sie möchten, aktivieren zurück-button-Funktionalität. Sie immer noch mit dem 'normalen' view-Controller, die Sie gerade eingebettet in einen Navigations-controller. Dann können Sie die push-view-Controller und in der Lage sein, wieder zu gehen.
Was der Unterschied zwischen "Navigation-Controller -> UITableView-Controller -> UITableView-Controller" und "Navigation-Controller -> UITableView-Controller -> Navigations-Controller -> UITableView Controller"
Es gibt keinen Grund, um wickeln Sie Ihre view-Controller in einem navigation-controller zweimal.
Ich wollte die Anzeige einer Tabelle (ex-Autoren), wenn Sie Tippen Sie auf eine Zeile, die es durchwandert haben, um eine neue Tabelle (ex-Büchern). Also, was Verschieden, wenn ich von storyboard, das ich einbetten "Navigations-Controller -> UITableView-Controller -> UITableView-Controller" und der andere, das ich einbetten "Navigations-Controller -> UITableView-Controller -> Navigations-Controller -> UITableView Controller"
Kurze Antwort: mit einem Navigations-Controller mit "show" leitet über nur zu implementieren, DRILL-DOWN-Verhalten.
Beispielsweise
Navigation Controller → Autoren → Bücher → Buch
Für jede Ebene unter der "root" (Autoren), der Navigation-Controller automatisch fügt der Titelleiste und zurück-Taste. Also auf Bücher, die zurück-Taste wird automatisch mit dem Namen "<Autoren".
Den child-View-Controller muss verbunden werden mit SHOW leitet über -- show leitet über sagen Sie den Navigation-Controller "dies ist ein Eltern-Kind-Beziehung" und führen die erwarteten slide-in-aus-der-rechts-übergang. (Springen außerhalb der Hierarchie, zum Beispiel, die Bücher → Login, verwenden Sie ein modal-segue statt.)
Dem root-View-Controller verfügt über eine Navigationsleiste, können Sie weitere Schaltflächen, aber child-View-Controller nicht, weil es automatisch Hinzugefügt.
FoodTracker Beispiel
Nun die merkwürdig anmutende Anordnung der FoodTracker tutorial in apples Start der Entwicklung von iOS Apps (Swift) erklärt werden kann. **Was ist mit dem zweiten verschachtelten Navigations-Controller? Es ist nur eine einfache Liste der Mahlzeiten: Tippen Sie auf eine Mahlzeit, um zu zeigen, dass es in Essen Detail, oder Tippen Sie auf Hinzufügen und Mahlzeit Detail wird Hinzufügen Mahlzeit.
FoodTracker Storyboard
Den ersten Navigation-Controller macht Meine Mahlzeiten die Wurzel des drill-down-Hierarchie für eine beliebige Anzahl von Ansichten "schob" Sie von dort aus (es ist keine weitere Navigation-Controller benötigt werden, nur das zu tun).
Aber, Mahlzeit Detail, sowohl für die Anzeige einer vorhandenen Mahlzeit und das hinzufügen einer neuen Mahlzeit. Hinzufügen eines neuen Mahlzeit, Abbrechen und Speichern " - buttons werden benötigt. Die zweite Navigations-Steuerung ermöglicht es, die Tasten Hinzugefügt werden (siehe 3. Punkt oben), indem Sie Mahlzeit Detail eine Wurzel.
Anzeige eine bestehende Mahlzeit ist ein push-segue, aber das hinzufügen einer Mahlzeit ist ein modal-segue (eine neue Mahlzeit ist kein drill-down). Das ist wichtig: der Grund, Hinzufügen Mahlzeit kann man nicht einfach geschoben ist, dass das automatische zurück-Taste ("< Meine Mahlzeiten") wird mehrdeutig: ist es speichern oder Abbrechen?
Weil "navigation" und "push" sind sehr Allgemeine Begriffe, und weil es nett ist, kostenfrei einen zurück-button, es ist verlockend zu glauben, Navigation-Controller sind zu gehen, von irgendwo nach irgendwo, aber das Verhalten ist bestimmt nur für hierarchische traversal.
(Dies ist eine alte Frage, aber ich war auch verwirrt über das, wie eine iOS-n00b und wie die OP hatte ich immer noch Fragen stellen.
In meiner Erfahrung, es gibt keine Allgemeine Regel, um zu entscheiden, diese Art von Dingen kommt es auf die usability Ihrer zukünftigen App...
Navigation-controller hilft dem Benutzer, sich daran zu erinnern, wo Sie sind, in jedem moment, und wie Sie können gehen Sie zurück, konnte aber nicht das beste, was zu verwenden, wenn Sie haben zu viele Ebenen... Und mehr wichtig, wenn Sie einen NavigationController oder ein TabBarController, Sie haben eine Klasse, zugänglich von allen anderen ViewControllers, wo können Sie die Allgemeinen Funktionen oder Daten...
Den Unterschied zwischen dem modal-und push-segue ist, dass in der ersten werden Sie immer wieder in das übergeordnete ViewController, weil Sie nur zeigen, neue Informationen an den Anfang, während im push-Sie ersetzen nur einen ViewController mit anderen...
Verwenden Sie Navigations-Controller, wenn Sie möchten, aktivieren zurück-button-Funktionalität. Sie immer noch mit dem 'normalen' view-Controller, die Sie gerade eingebettet in einen Navigations-controller. Dann können Sie die push-view-Controller und in der Lage sein, wieder zu gehen.