Подтвердить что ты не робот

IOS - Как проверить, присутствует ли модальный вид

Есть ли способ проверить, присутствует ли модальный вид? Я бы хотел запустить метод только в том случае, если присутствует модальный вид. Кроме того, если у меня есть несколько модальных представлений, есть ли способ проверить, присутствует ли определенный вид модальности.

Я использую следующий код для представления и исключения модальных представлений:

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

Заранее благодарю вас!

Cheers, Эван

PS. Модный вид имеет контроллер вида, но я хотел бы проверить, присутствует ли модальный вид из отдельного класса, который выполняется асинхронно.

4b9b3361

Ответ 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] ) {

}