UINavigationController: Auf dem iPad wird gerade der View Controller angezeigt, während ein anderer Controller geschlossen wird

Ich habe eine Ansicht, die erfordert, dass der Benutzer angemeldet ist. Wenn der Benutzer versucht, diese Ansicht zu öffnen, und er nicht angemeldet ist, rufe ich die Anmeldeansicht auf, damit er sich anmeldet. Nachdem er fertig ist, rufe ich die ursprüngliche Ansicht auf, die er beabsichtigt hat sehen.
Auf dem iPhone funktioniert dies einwandfrei, da ich dort View-Controller drücke. Aber auf dem iPad, wo ich View Controller präsentiere, funktioniert dies nicht. Es heißt, dass bei laufender Entlassung kein neuer Controller angezeigt werden kann. Hier ist der Code:

- (void) buttonPressed
{
    if (!userLoggedIn) { // userLoggedIn getter calls new screens of login if needed
    return;  // this is executed if user declined to login
    }
    MyViewController *temp = [[MyViewController alloc] init];
    [self.navigationController presentViewController:temp animated:YES]; // this returns warning that dismissal in progress and does not work
}

Was kann ich dagegen tun? Auf dem iPhone funktioniert meine gesamte Logik einwandfrei, auf dem iPad schlägt sie jedoch fehl. Ich benutze es an vielen Stellen und das vollständige Umschreiben von Code ist nicht gut.

EDIT: mehr Code:

- (BOOL) userLoggedIn {
   // code omitted
    [centerController presentViewController:navController animated:YES completion:nil];
   // code omitted
   [centerController dismissViewController:navController animated:YES]; // setting to NO does not fix my problem
   return YES;
}

EDIT2: Dies ist der Code für das iPad. Ich habe iPhone-bezogenen Code entfernt. Was es auf dem iPhone macht - anstatt den Controller zu präsentieren, wird Pushing verwendet, und in dieser Situation funktioniert alles einwandfrei.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage