2012-10-16 6 views
1

splitViewController에서 디테일 뷰를 변경하려고하는데 UIViewControllerHierarchyInconsistency 예외가 있습니다. self.detailView.view = view.view; xib 파일에 다른 viewController가 있고 또한 removeFromParentViewController 메서드를 사용하는 경우에도 제어했습니다. 그러나 동일한 예외가 있습니다. 오류는 iOS 6에서만 발생하지만 iOS 5에서는 iPad 시뮬레이터에서 발생하지 않습니다.UIViewControllerHierarchy 불일치 뷰 컨트롤러 예외

+0

상황에 대한 컨텍스트를 제공하는 코드를 제공해 주시겠습니까? 예를 들어, view.view는 어디에서 왔으며, removeFromParentViewController를 사용하고 Console에서 정확한 오류가 나옵니다. – WDUK

+0

캐치되지 않은 예외 'UIViewControllerHierarchyInconsistency'로 인해 앱이 종료됩니다. 이유는 다음과 같습니다. '한 번에 하나의보기 컨트롤러에만보기를 연결할 수 있습니다! 이 오류, view.view splitViewController로드 할보기입니다, 다른 코드가 없습니다, viewController 연결을 제거하려면 removefromparentviewcontroller 사용되는 분할 뷰의 변경 만 않습니다. 예외를 제거하려면 – user1575803

답변

0

'UIViewControllerHierarchyInconsistency'라는 캐치되지 않은 예외로 인해 앱이 종료되는 이유는 다음과 같습니다. '한 번에 하나의보기 컨트롤러에만보기를 연결할 수 있습니다! 이 오류, view.view splitViewController로드 할보기입니다, 다른 코드가 없습니다, viewController 연결을 제거하려면 removefromparentviewcontroller 사용되는 분할 뷰의 변경 만 않습니다. 예외를 제거하려면

splitViewController가 UISplitViewController의 인스턴스입니까? http://developer.apple.com/library/ios/#documentation/uikit/reference/UISplitViewController_class/Reference/Reference.html

그렇다면 근본적으로 잘못된 것을하고있는 것입니다. UISplitViewController는 단순히 두 개의 뷰 컨트롤러, 마스터 뷰 컨트롤러 및 상세 뷰 컨트롤러에 대한 컨테이너입니다. 그런 다음 상호 작용 등을 처리하는 방법을 결정하는 것은보기 컨트롤러에 달려 있습니다. removeFromParentViewController는 View Controller Containment에서만 사용되며 여기서는 적용되지 않습니다.

위 링크에서 설명서를 읽고 필요에 맞는 지 확인하십시오. 그러나 이해한다면보기가 아닌 분할보기에서 컨트롤러보기를 설정해야합니다.

당신을 위해, 당신이해야 할 : 올바른 해결책이 될 수 있도록이 적용되지 않는 경우

// Assume this is initialised correctly 
UISplitViewController* splitViewController = [UISplitViewController alloc] init...]; 

// Assign the two view controller you want to be used in the split view controller 
splitViewController.viewControllers = @[masterViewController, detailViewController]; 

를, 다음 코드를 제공하십시오. 귀하의 설명은 귀하가 실제로하는 일에 대해 다소 모호합니다.

+0

네, 그게 제가 한 일입니다. 저는 viewControllers를 직접 바꿨습니다 ... – user1575803