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?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage