it-swarm.com.de

iOS - So überprüfen Sie, ob eine modale Ansicht vorhanden ist

Gibt es eine Möglichkeit zu überprüfen, ob eine modale Ansicht vorhanden ist? Ich möchte eine Methode nur ausführen, wenn eine modale Ansicht vorhanden ist. Wenn ich mehrere modale Ansichten habe, gibt es eine Möglichkeit, zu überprüfen, ob eine bestimmte modale Ansicht vorhanden ist.

Ich verwende den folgenden Code, um modale Ansichten darzustellen und zu schließen:

    [self presentModalViewController:myModalView animated:YES];
    [self dismissModalViewControllerAnimated:YES];

Danke im Voraus!

Prost, Evan

PS. Meine modale Ansicht verfügt über einen Ansichtscontroller, ich möchte jedoch überprüfen, ob die modale Ansicht von einer separaten Klasse stammt, die asynchron ausgeführt wird.

55
Evan Johnson

Überprüfen Sie das Vorhandensein eines modalen Ansichtscontrollers vom übergeordneten Ansichtscontroller? In diesem Fall können Sie einfach die modalViewController-Eigenschaft des View-Controllers überprüfen:

BOOL modalPresent = (self.modalViewController);

Wenn Sie nach einem bestimmten Controller für die modale Ansicht suchen möchten, können Sie den Klassennamen des Controllers für die modale Ansicht wie folgt ermitteln:

NSString *modalClassName = NSStringFromClass([self.modalViewController class]);
75
arlomedia

Sie können Folgendes überprüfen: self.presentedViewController, Was The view controller that is presented by this view controller, or one of its ancestors in the view controller hierarchy. Zurückgibt.

58
tipycalFlow

Was bei mir funktioniert hat, ist folgendes:

// this is the trick: set parent view controller as application's window root view controller
UIApplication.sharedApplication.delegate.window.rootViewController = viewController;

// assert no modal view is presented
XCTAssertNil(viewController.presentedViewController);

// simulate button tap which shows modal view controller
[viewController.deleteButton sendActionsForControlEvents:UIControlEventTouchUpInside];

// assert that modal view controller is presented
XCTAssertEqualObjects(viewController.presentedViewController.class, MyModalViewController.class);

Soweit ich es getestet habe, funktioniert dies für iOS7 und iOS8. Ich habe es jedoch nicht mit iOS6 versucht.

6
mixtly87

Sie können das Vorhandensein eines modalen view controller vom übergeordneten view controller

if ( [[self presentingViewController] presentingViewController] ) {

}
1
Binoy jose