2017-01-30 7 views
0

저는 주로 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
+0

내 navCons에 대한 사용자 지정 하위 클래스를 사용하지만 표준 UINavigationController로 변경하면 여전히 발생합니다. – ABeard89

+0

상징적 인 중단 점을 추가하여 변경된시기를 확인했으며 필자가 작성한 코드에는 명확하게 없습니다. 중단 점은'presentViewController' 연산 중에 어딘가에서 UIKit 내부에서 멈추었습니다. 불행히도, 나는 그것을 이해할 수 없었다. 내가 할 수있는 일이 보이지 않았다. – ABeard89

+0

감사합니다. 그게 내가 가진 것입니다. 현재 상황으로 제시하고 싶지 않다는 것이 너무 이상합니다. 설명서에 따르면 가능하다고 말하면서 모든 것을 올바르게하고 있다고 말할 수 있습니다. 내 유일한 희망은 여기에있는 누군가가 문서화되지 않은 버그 나 iOS7의 행동에 대한 기발한 점을 기억하는지 확인하는 것이 었습니다. 그리고 나는 당신이 놀랍지 않다. 간신히 테스트 할 수있는 제품이 있습니다. 테스트하기 위해 XCode7을 사용해야하기 때문에 짜증납니다. – ABeard89

답변

0

iPhone 장비 또는 시뮬레이터에서 테스트 중이라고 생각합니다. iOS 7 이전 버전에서 UIModalPresentationCurrentContextiPad 전용 기능이었습니다.

+0

글쎄, 왜 그것이 계속 풀 스크린으로 강제되는 이유를 설명 할 것입니다! 그리고 네, 저는 아이폰에서 테스트하고 있습니다. – ABeard89

+0

설명서가이 작은 맛있는 음식에 대해 언급했다면 도움이 될 것입니다 ... – ABeard89

+0

하지만 아이폰의 ios7에서 무언가가 모달로 표시되면 완전히 풀릴 수 있습니다. – ABeard89