iOS - How to check if a modal view is present

ε祈祈猫儿з 提交于 2019-12-03 01:10:13

问题


Is there a way to check if a modal view is present? I'd like to run a method only if a modal view is present. Also, if I have multiple modal views, is there a way to check if a certain modal view is present.

I use the following code to present and dismiss modal views:

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

Thank you in advance!

Cheers, Evan

PS. My modal view has a view controller, but I'd like to check if the modal view is present from a separate class that is running asynchronously.


回答1:


Are you checking the presence of a modal view controller from the parent view controller? If so, you can just check that view controller's modalViewController property:

BOOL modalPresent = (self.modalViewController);

If you want to check for a particular modal view controller, you can get the modal view controller's class name like this:

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



回答2:


You can check using: self.presentedViewController, which returns The view controller that is presented by this view controller, or one of its ancestors in the view controller hierarchy.




回答3:


What worked for me is following:

// 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);

As far as I tested it, this works for iOS7 and iOS8. Didn't try on iOS6 however.




回答4:


You can check the presence of a modal view controller from the parent view controller

if ( [[self presentingViewController] presentingViewController] ) {

}


来源:https://stackoverflow.com/questions/5338049/ios-how-to-check-if-a-modal-view-is-present

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!