IOS - Как проверить, присутствует ли модальный вид
Есть ли способ проверить, присутствует ли модальный вид? Я бы хотел запустить метод только в том случае, если присутствует модальный вид. Кроме того, если у меня есть несколько модальных представлений, есть ли способ проверить, присутствует ли определенный вид модальности.
Я использую следующий код для представления и исключения модальных представлений:
[self presentModalViewController:myModalView animated:YES];
[self dismissModalViewControllerAnimated:YES];
Заранее благодарю вас!
Cheers,
Эван
PS. Модный вид имеет контроллер вида, но я хотел бы проверить, присутствует ли модальный вид из отдельного класса, который выполняется асинхронно.
Ответы
Ответ 1
Проверяете ли вы наличие контроллера модального представления с родительского контроллера? Если это так, вы можете просто проверить свойство modulViewController диспетчера вида:
BOOL modalPresent = (self.modalViewController);
Если вы хотите проверить конкретный контроллер модального представления, вы можете получить имя класса контроллера модального вида следующим образом:
NSString *modalClassName = NSStringFromClass([self.modalViewController class]);
Ответ 2
Вы можете проверить, используя: self.presentedViewController
, который возвращает The view controller that is presented by this view controller, or one of its ancestors in the view controller hierarchy.
Ответ 3
Что для меня работало:
// this is the trick: set parent view controller as application 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);
Насколько я тестировал, это работает для iOS7 и iOS8. Однако не пытайтесь использовать iOS6.
Ответ 4
Вы можете проверить наличие модального view controller
из родительского view controller
if ( [[self presentingViewController] presentingViewController] ) {
}