1

저는 처음부터 내 자신의 SplitViewController를 작성하고 있습니다 (즉, UIViewController이 아닌 서브 클래스 화는 UISplitViewController이 아닙니다).맞춤 SplitViewController 코딩 - 언제 viewWillAppear, viewDidAppear 등을 호출해야합니까?

적절한 메시지 (viewWillAppear, viewDidAppear, viewWillDisapppear and viewDidDisappear)를 보낼 필요가있는 두 개의 하위보기 제어기가 있습니다 (하나는 왼쪽 패널 용이고 다른 하나는 세부 오른쪽 패널 용입니다).

사용자 지정 SplitViewController가 메시지를 받으면 잘 전달합니다. 그러나 두 하위 뷰 컨트롤러 중 하나가 새 메시지 컨트롤러로 교체 될 때 해당 메시지를받을시기를 결정하는 데 어려움을 겪고 있습니다. 새 UIViewController 뷰를 제대로 추가하고 있지만 메시지가 적절하게 호출되지 않습니다.

내 초기 접근 방식은 viewWillDisappearUIViewController 약이 출시와 새로운 UIViewController 세트에 viewWillAppear 할 호출 하위 viewControllers의 세터에서 그들을 호출했지만이 하나 viewDidLoad 전에 실행되고, 따라서 나는 가정 잘못된 것입니다.

UIView에 메서드를 사용하면 해당 UIViewControllerviewDidAppear을 호출 할 때 유용하다는 것을 알 수 있습니다.

은 어떤 도움이 많이 주시면 감사하겠습니다!

답변

2

UISplitViewController를 미러링하려면 각 메소드가 호출 될 때마다 인쇄하는 더미 UIViewController 만있는 것이 가장 좋습니다. viewWillDisappear, viewWillAppear하고있는 viewDidLoad의 순서의 현재의 문제에 관해서는

바로 수행 (? 또는 그 것이었다 -viewWillDisappear) 때 자동으로 호출된다 :

-(void)setSomeViewController(UIViewController newVC) 
{ 
    [oldVC viewWillDisappear]; 
    [newVC view]; // Causes newVC to load the view, 
        // and will automatically call -viewDidLoad 
    [newVC viewWillAppear]; 

    [oldVC.view removeFromSuperview]; 
    [self.view addSubview:newVC.view]; 

    //retain and release as appropriate 
    // other stuff you'll need to mirror, etc. etc. 
} 
+0

나는 때때로 -viewWillAppear 것으로 나타났습니다 VC의 뷰를 계층 구조에 추가/제거합니다. 분명히 이것은 사용자 정의 뷰 전환을 구현하기 위해 뷰 계층 구조 위로 올라 갔지만 염두에 두어야 할 가치가 있습니다. 또한 UIViewControllerWrapperView라는 뭔가가 있다고 생각합니다. –

+0

기본 UIViewController는이 작업을 수행하지 않지만 UINavigationController, UITabBarController 등의 계층 구조 유형은이 작업을 수행합니다. –

+0

David Liu에게 감사드립니다. 또한 사용자 정의 UIView의 (void) didAddSubview : (UIView *) 하위보기가 매우 유용 할 수 있으므로 사용자 정의 UISplitViewController가 sub-UIViewController를 해당 viewDidAppear에 알릴 수 있습니다. – monchote

관련 문제