저는 주로 UITabBarController
에 여러 개의 UINavigationController
이 포함 된 예쁜 표준 뷰 계층 구조를 가지고 있습니다.iOS 7이 CurrentContext 모달 프리젠 테이션을 오버라이드합니다.
새로운 UINavigationController
을 만들고 탭 중 하나에서 모달로 표시하고 있습니다. ,이되게됩니다 때
[oldNavCon presentViewController:newNavCon animated:YES completion:nil];
을하지만 :
가 나는 UIModalPresentationCurrentContext
으로 보여주고 싶은, 그래서 너무처럼하고 있어요 :
[newNavCon setModalPresentationStyle:UIModalPresentationCurrentContext];
그리고 그때, 나는이처럼 제시 내가 설정 한 현재 컨텍스트가 아닌 전체 화면입니다.
중단 점을 보면 newNavCon
의 모달 프레젠테이션 스타일이 으로 바로 변경되고 presentViewController
이 표시됩니다.
나를 혼란스럽게하는 것은이 문제가 발생하는 것입니다. iOS7에서만입니다. iOS 8-10에서 예상대로 작동합니다.
왜 이런 일이 발생합니까? iOS7에 대해 모르는 몇 가지 특이한 점이 있습니까? 왜 프리젠 테이션 스타일이 이렇게 오버 라이딩됩니까?
편집 : 가 명확하게는, 여기에 내가 함께 일하고 있어요 뷰 계층의 :
UIViewController
(컨테이너 등, 전체 화면)UITabBarController
(전체 화면되지 컨테이너에 의해 제어)definesPresentationContext
,
UINavigationController
는 (위UIViewController
에 의해 모달 발표)definesPresentationContext
UINavigationController
(탭 루트로, 모달 창을 제공합니다)modalPresentationStyle
=UIModalPresentationCurrentContext
UIViewController
내 navCons에 대한 사용자 지정 하위 클래스를 사용하지만 표준 UINavigationController로 변경하면 여전히 발생합니다. – ABeard89
상징적 인 중단 점을 추가하여 변경된시기를 확인했으며 필자가 작성한 코드에는 명확하게 없습니다. 중단 점은'presentViewController' 연산 중에 어딘가에서 UIKit 내부에서 멈추었습니다. 불행히도, 나는 그것을 이해할 수 없었다. 내가 할 수있는 일이 보이지 않았다. – ABeard89
감사합니다. 그게 내가 가진 것입니다. 현재 상황으로 제시하고 싶지 않다는 것이 너무 이상합니다. 설명서에 따르면 가능하다고 말하면서 모든 것을 올바르게하고 있다고 말할 수 있습니다. 내 유일한 희망은 여기에있는 누군가가 문서화되지 않은 버그 나 iOS7의 행동에 대한 기발한 점을 기억하는지 확인하는 것이 었습니다. 그리고 나는 당신이 놀랍지 않다. 간신히 테스트 할 수있는 제품이 있습니다. 테스트하기 위해 XCode7을 사용해야하기 때문에 짜증납니다. – ABeard89