2014-01-14 4 views
33

Ich versuche herauszufinden, was der Unterschied zwischen einem benutzerdefinierten UIStoryboardSegue und einem benutzerdefinierten UIViewcontroller Übergang (in ios7 eingeführt) ist.Unterschied zwischen einem benutzerdefinierten UIStoryboardSegue und UIViewController Übergang

Was sind die Unterschiede und die verschiedenen Anwendungsfälle für beide? Soweit ich das beurteilen kann, werden sie beide für benutzerdefinierte Umzüge zu neuen Controllern verwendet.

Möglicherweise werden die UIViewcontroller Übergänge mehr für einen Controller verwendet, der nur angezeigt wird und wird irgendwann verworfen werden, während der Übergang ein kompletter Zug ist und nicht unbedingt ein Zurück?

Custom Segues
UIViewControllerTransitioningDelegate Protocol Reference

+0

Segue definiert die Aktion (A und B anzeigen) zwischen zwei View-Controllern, während der View-Controller-Übergang beschreibt, wie der View-Controller angezeigt oder entfernt wird. – x4snowman

+0

Versuchen Sie zu sagen, dass ein Segment eine bestimmte Richtung hat, während ein View Controller-Übergang nicht über einen präsentierenden und präsentierten View-Controller verfügt und entweder einen ein- oder ausstrahlt? – StuartM

+0

Was ich meine ist "kapselt" die Aktion wie [vc1 push: xxx] oder [vc1 presentModal: xxx], es ist eine bequeme Möglichkeit, v2 von v1 mit Standardübergang (Push, modal) zu definieren, Sie don ' t muss solchen Code schreiben, aber rufen Sie einfach [self performSegueWithIdentifier: xxx]. Und meiner Meinung nach können Sie mit dem Übergangsdelegaten den Animationseffekt anpassen. – x4snowman

Antwort

0

Wenn Sie Storyboard segues verwenden und Sie eine benutzerdefinierte Übergang möchten, müssen Sie eine benutzerdefinierte UIStoryboardSegue verwenden. Wenn Sie jedoch normale UIViewController-Methoden zum Präsentieren neuer View-Controller verwenden, verwenden Sie einen benutzerdefinierten UIViewController-Übergang. In beiden Fällen sind Ihre vorherigen View-Controller noch vorhanden und Sie können jederzeit zurückgehen. Es hängt nur davon ab, mit welcher Methode Sie einen neuen View-Controller aufrufen möchten.

+2

Ich bin mir nicht sicher, ob dies richtig ist, da Sie den UIViewController Transitioning mit segues ohne Problem verwenden können. Ich habe einige View-Controller-Übergänge bereits eingerichtet und benutze Segmente in Verbindung mit ihnen, auch die benutzerdefinierten Übergänge. Allerdings kenne ich den Unterschied zwischen diesen und Anwendungsfällen nicht. – StuartM

+0

Sie könnten, ja. Aber ich denke, Sie können nur ein benutzerdefiniertes "UIStoryboardSegue" verwenden, wenn Sie tatsächlich Segmente verwenden. – Gavin

+0

@StuartM Es gibt mindestens einen Fall, in dem Sie UIViewControllerTransitioningDelegate nicht mit Storyboard-Segmenten verwenden können. Wenn Sie einen benutzerdefinierten Container-Ansichtscontroller mit mehreren untergeordneten Elementen haben und ein benutzerdefiniertes Segment von einem untergeordneten auf ein untergeordnetes Element wechseln und '-addChildViewController: 'ordnungsgemäß auf dem Container-Controller ausführen soll, funktioniert ein standardmäßiger Präsentationsübergang nicht wird nicht mit der Erziehung umgehen.AFAICT, müssen Sie diese Elternschaft selbst tun, und ein benutzerdefiniertes Segment ist ein logischer Ort dafür - aber dann UIViewControllerTransitioningDelegate wird nicht verwendet. – erikprice

3

Benutzerdefinierte Segues dienen nicht nur zum Definieren der Präsentationsstile, sondern können auch zum Definieren einer benutzerdefinierten Hierarchie von Ansichtscontrollern und Präsentationsstilen verwendet werden - etwas, das sich von Navigations- oder Tab-View-Controllern unterscheidet.

Das Problem bei der Verwendung benutzerdefinierter Segmente nur für die Präsentation besteht darin, dass der Entwickler auch für die Verwaltung der View-Controller-Hierarchie zuständig ist, was nicht die Absicht ist.

Mit der benutzerdefinierten Übergangs-API wird die Präsentation von der Verwaltung der Ansichtscontroller getrennt.

+2

Das macht Sinn. Gibt es eine Möglichkeit, View Controller-Übergänge von benutzerdefinierten Segmenten oder eine andere Möglichkeit, die Trennung beizubehalten, wenn benutzerdefinierte Segmente verwendet werden, auszulösen? – kolizz

Verwandte Themen