Abschlussblock für popViewController
Beim schließen einer modal-view-controller mit dismissViewController
gibt es die option, um eine Abschluss-block. Gibt es eine ähnliche Entsprechung für popViewController
?
Abschluss argument ist Recht praktisch. Zum Beispiel kann ich es verwenden, um halten Sie das entfernen einer Zeile aus einem tableview, bis das modal wird vom Bildschirm, sodass der Benutzer die Zeile animation. Bei der Rückkehr von einer gedrückt-view-controller, möchte ich gleich die Gelegenheit.
Ich habe versucht, indem Sie popViewController
in einem UIView
animation sperren, denen ich Zugang zu einem Abschluss zu blockieren. Jedoch, dies produziert einige unerwünschte Nebenwirkungen auf die view geholt.
Wenn es keine solche Methode vorhanden, was sind einige workarounds?
InformationsquelleAutor der Frage Ben Packard | 2012-10-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weiß ich eine Antwort akzeptiert wurde vor über zwei Jahren, aber diese Antwort ist unvollständig.
Dies ist technisch richtig, weil die
UINavigationController
API bietet keine Optionen für dieses. Jedoch mithilfe des CoreAnimation-framework ist es möglich, fügen Sie ein Abschluss-block, um die zugrunde liegenden animation:Den Abschluss-block wird aufgerufen, sobald die animation verwendet
popViewControllerAnimated:
endet. Diese Funktion gibt es seit iOS 4.InformationsquelleAutor der Antwort Joris Kluivers
Für iOS9 SWIFT version - funktioniert wie ein Charme (noch nicht getestet für frühere Versionen). Basierend auf diese Antwort
InformationsquelleAutor der Antwort HotJard
Machte ich einen
Swift
version mit Erweiterungen mit @JorisKluivers Antwort.Dies ruft einen Abschluss Schließung nach der animation geschieht für beide
push
undpop
.InformationsquelleAutor der Antwort Arbitur
Ich hatte das gleiche Problem. Und da musste ich es in mehreren Gelegenheiten, und in den Ketten der Fertigstellung der Blöcke habe ich das generische Lösung in einem UINavigationController Unterklasse:
Vorausgesetzt
und
und
InformationsquelleAutor der Antwort Jos Jong
Gibt es keine Möglichkeit, das zu tun, was Sie wollen, sind out-of-the-box. d.h. es gibt keine Methode, mit einem Abschluss-block für knallen eines view-controller aus einer nav-stack.
Was ich tun würde, ist die Logik in
viewDidAppear
. Das wird aufgerufen, wenn der view fertig, die kommen auf dem Bildschirm. Es wird aufgerufen werden, für alle verschiedenen Szenarien des view-Controllers erscheinen, aber das sollte in Ordnung sein.Oder verwenden Sie den
UINavigationControllerDelegate
MethodenavigationController:didShowViewController:animated:
etwas ähnliches tun. Diese wird aufgerufen, wenn der Navigations-controller fertig ist das schieben oder das knallen eines view-controller.InformationsquelleAutor der Antwort mattjgalloway
Arbeiten mit oder ohne animation, richtig, und auch
popToRootViewController
:InformationsquelleAutor der Antwort rshev
Swift 3 Antwort, vielen Dank für diese Antwort: https://stackoverflow.com/a/28232570/3412567
InformationsquelleAutor der Antwort Benobab
Den Abschluss-block aufgerufen wird, nachdem die viewDidDisappear Methode wird aufgerufen, auf die vorgestellten view-controller, So setzen Sie code in die viewDidDisappear Methode der knallte view-controller sollte genauso funktionieren wie ein Abschluss-block.
InformationsquelleAutor der Antwort rdelmar
Basierend auf @HotJard die Antwort, wenn alle Sie wollen, ist nur ein paar Zeilen code. Schnell und Einfach.
Swift 4:
InformationsquelleAutor der Antwort Vitalii
Es ist ein pod genannt UINavigationControllerWithCompletionblock die Unterstützung für ein Abschluss-block, wenn beide pushing und popping auf einem UINavigationController.
InformationsquelleAutor der Antwort duncanc4
Für 2018 ...
wenn Sie diese ...
und Sie möchten fügen Sie einen Abschluss ...
so einfach ist das.
InformationsquelleAutor der Antwort Fattie
Nur der Vollständigkeit halber, ich habe eine Objective-C Klasse bereit:
InformationsquelleAutor der Antwort Diego Freniche
Ich genau das erreicht, dies mit der Präzision, die mit einem block. Ich wollte meine Ergebnisse geholt controller zeigen die Zeile, die Hinzugefügt wurde, durch das modale anzeigen, nur einmal hatte es voll nicht mehr auf dem Bildschirm, so dass der Benutzer sehen könnte, der Wandel geschieht. In Vorbereitung für den übergang ist verantwortlich für die Darstellung der modal-view-controller, habe ich den block möchte ich ausführen, wenn das modale verschwindet. Und in der modal-view-controller, die ich überschreiben viewDidDissapear und dann rufen Sie den block. Fange ich einfach aktualisiert, wenn die modale werde erscheinen und am Ende die updates, wenn es verschwindet, aber das ist weil ich bin mit einem NSFetchedResultsController aber Sie können tun, was Sie gerne in den block.
InformationsquelleAutor der Antwort malhal
Verwenden, der nächsten Erweiterung, die auf Ihrem code: Swift (4)
InformationsquelleAutor der Antwort Rigoberto Sáenz Imbacuán
SWIFT 4.1
InformationsquelleAutor der Antwort iOS_Developer
Swift 4-version mit optional viewController parameter zu pop, zu einem bestimmten.
InformationsquelleAutor der Antwort TejAces
Aufgeräumt Swift 4 - version, basierend auf diese Antwort.
InformationsquelleAutor der Antwort d4Rk