development

iOS-모달보기가 있는지 확인하는 방법

big-blog 2021. 1. 5. 21:07
반응형

iOS-모달보기가 있는지 확인하는 방법


모달 뷰가 있는지 확인하는 방법이 있습니까? 모달 뷰가있는 경우에만 메서드를 실행하고 싶습니다. 또한 여러 모달 뷰가있는 경우 특정 모달 뷰가 있는지 확인하는 방법이 있습니까?

다음 코드를 사용하여 모달 뷰를 표시하고 닫습니다.

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

미리 감사드립니다!

건배, 에반

추신. 내 모달 뷰에는 뷰 컨트롤러가 있지만 비동기 적으로 실행되는 별도의 클래스에서 모달 뷰가 있는지 확인하고 싶습니다.


부모 뷰 컨트롤러에서 모달 뷰 컨트롤러가 있는지 확인하고 있습니까? 그렇다면 해당 뷰 컨트롤러의 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] ) {

}

참조 URL : https://stackoverflow.com/questions/5338049/ios-how-to-check-if-a-modal-view-is-present

반응형