viewWillAppear wird zweimal mit benutzerdefinierten Segue-Animationen mithilfe von transitionFromView aufgerufen
Ich möchte eine Überblendung durchführen, um den Stammansichts-Controller des Fensters mithilfe einer Aufrollanimation durch einen anderen Ansichts-Controller zu ersetzen. Die Idee ist, dass ich eine habeSplashViewController
wird vor dem Übergang einige Sekunden lang angezeigt (performSegueWithIdentifier:
) zum nächsten,LoginViewController
, Verwenden der Aufrollanimation.
Ich habe einen Brauch erstelltUIStoryboardSegue
Klasse namensAnimatedSegue
. Hier ist der Code des Überschriebenenperform
Methode:
- (void)perform
{
UIViewController *source = self.sourceViewController;
UIViewController *destination = self.destinationViewController;
UIWindow *window = source.view.window;
[UIView transitionFromView:source.view
toView:destination.view
duration:1.0
options:UIViewAnimationOptionTransitionCurlUp
completion:^(BOOL finished) {
[window setRootViewController:destination];
}];
}
Es funktioniert einwandfrei, außer dass in iOS 6 (anscheinend nicht in iOS 5) dieviewWillAppear:
Methode wird zweimal auf dem aufgerufendestination
Controller anzeigen. Es scheint, dass es ein erstes Mal während des Übergangs und ein zweites Mal, wenn es ausgeführt wird, aufgerufen wird[window setRootViewController:destination];
Beachten Sie, dass ich keinen Navigationscontroller verwenden möchte. DasSplashViewController
wird (wie erwartet) freigegeben, sobald der Übergang abgeschlossen ist.
Irgendwelche Ideen, wie ich mein Problem beheben kann?