160 Stimmen

Wie überprüft man, ob ein Ansichts-Controller modal präsentiert oder auf einem Navigations-Stack verschoben wurde?

Wie kann ich in meinem Ansichtscontrollercode zwischen folgenden Punkten unterscheiden:

  • modal präsentiert
  • auf dem Navigationsstapel verschoben

Sowohl presentingViewController als auch isMovingToParentViewController sind in beiden Fällen YES, daher nicht sehr hilfreich.

Was die Dinge kompliziert macht, ist, dass mein Elternansichtscontroller manchmal modal ist, auf dem der zu überprüfende Ansichtscontroller verschoben wird.

Es stellt sich heraus, mein Problem ist, dass ich meinen HtmlViewController in einem UINavigationController einbetten, der dann präsentiert wird. Deshalb haben meine eigenen Versuche und die guten Antworten unten nicht funktioniert.

HtmlViewController*     termsViewController = [[HtmlViewController alloc] initWithDictionary:dictionary];
UINavigationController* modalViewController;

modalViewController = [[UINavigationController alloc] initWithRootViewController:termsViewController];
modalViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:modalViewController
                   animated:YES
                 completion:nil];

Ich denke, ich sollte meinem Ansichtscontroller besser mitteilen, wenn er modal ist, anstatt zu versuchen, es zu bestimmen.

-1voto

Daniel Punkte 8470

self.navigationController != nil würde bedeuten, dass es sich in einem Navigations-Stack befindet.

-3voto

iCoder86 Punkte 1814
id presentedController = self.navigationController.modalViewController;
if (presentedController) {
     // Eine Ansicht wird präsentiert
} else {
     // Eine Ansicht wird verschoben
}

Dies wird Ihnen mitteilen, ob die Ansicht präsentiert oder verschoben wird

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X