popViewController:animiert: Sie funktioniert nicht in iOS 9
Ich bin mit einem Unterklassen-UINavigationController-verwaltet alle viewControllers in meiner app. Es drückt und knallt viewControllers in der main-Fluss und präsentiert sich und entlässt Modal diejenigen viewControllers, die erforderlich sind, willkürlich.
In einem Fall brauche ich eine viewController Modal, bevor knallen die anderen in den main fließen, etwa so:
//Called in custom UINavigationController subclass
[self presentViewController:searchVC animated:YES completion:^{
[self popViewControllerAnimated:NO];
}];
Den obigen code verwendet, um die Arbeit ohne Probleme bis iOS 8 und funktioniert nicht in iOS 9. Die gleiche viewController nach wie vor bleibt, wenn die vorgestellten vc entlassen wird.
Dies ist auch protokolliert wird in der Konsole:
popViewControllerAnimated: called on <CustomNavigationController 0x7d846600> while an existing transition or presentation is occurring; the navigation stack will not be updated.
Dies war nie ein Problem bis jetzt, vor allem, da die popViewController Methode wird aufgerufen, in der Abschluss-block.
Könnte das ein bug?
Jede Lösung/Vorschlag/workaround, ist willkommen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einwickeln der popViewController Aufruf in einem
dispatch_async
block gearbeitet.Es funktioniert für mich in einem standard -
UINavigationController
, wenn man auch eine "Unsymmetrische Aufrufe von begin/end-Optik übergänge" Warnung. Den folgenden code ersetzenpopViewControllerAnimated:
entledigt, die Warnung.Also ich würde vermuten das problem liegt in der Unterklasse. Tun Sie überschreiben
presentViewController:animated:completion:
oderpopViewControllerAnimated:
?dispatch_async
wrapper.Ja, ich bemerkte auch dieses problem in iOS 9.
Ich änderte den code (Swift):
wobei "controller" ist die Darstellung VC-Instanz.
Wenn Sie mit split-view-controller, versuchen, es zu entfernen.