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



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



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



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


спасибо заранее!



Ура,
Эван



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

539   4  

4 ответов:

вы проверяете наличие модального контроллера вида от родительского контроллера вида? Если это так, вы можете просто проверить свойство modalViewController этого контроллера вида:

BOOL modalPresent = (self.modalViewController);

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

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

Вы можете проверить с помощью: self.presentedViewController, который возвращает The view controller that is presented by this view controller, or one of its ancestors in the view controller hierarchy.

что сработало для меня следующее:

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

насколько я проверил, это работает для iOS7 и iOS8. Однако не пробовал на iOS6.

вы можете проверить наличие модальных view controller от родительского view controller

if ( [[self presentingViewController] presentingViewController] ) {

}

Comments

    Ничего не найдено.