2011-12-09 2 views
2

내 iPad 앱이 표준 UISplitViewController를 사용합니다. 파인 세로보기 모드로 전환 할 때 willHideViewController가 호출되지 않습니다.

  • detailview을 변경하는 팝 오버를 통해 항목을 선택합니다 (이 self.splitViewController.delegate = newViewDetailViewController;
  • 을 설정하는 prepareForSegue 사용 - 내가, 내가 마스터 목록 팝 오버 버튼을 넣어 세로로
    • 회전을

      하면 내 문제는, ..
    • 이 결과 detailview 지금 popoverbutton 누락 내가 가로로 회전하면 내가 다시 세로로 회전하는 경우, 마스터 목록이 나타납니다하는 popoverbutton가 나타납니다

    을 따라서 -. 어떻게 willHideViewController가 호출됩니다 보장 할 수 있습니다 0에예를 들면? 나는 방향이 무엇인지 감지 할 수 있습니다,하지만 난 여전히 barbuttonitem 및 popovercontroller이 here을 제안 MultipleDetailView 예를 들어 지금은 다음하고 사과를 들어

    - (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController

    필요합니다.

    하지만 여러 개의 MasterControllers가 있기 때문에 popoverbutton 항목에 정적 포인터를 저장하고 masterview 컨트롤러에서 레벨을 설정할 때마다 설정하는 것은 정말 번거 롭습니다.

    바라건대, 누군가가 내가 같은 문제에 달려 마침내 실종 있었는지 알아 냈

    +0

    나는이 똑같은 문제를 겪고 있습니다. 알아 낸 것입니까? – Bek

    +0

    Apple에서 링크 된 예제를 사용하여 종료되었습니다. popoverbutton이'willHideViewController' 메소드에서 나에게 전달된다는 것을 깨달았 기 때문에 다중 마스터 컨트롤러에 문제가되지 않았습니다. 그래서 세부 뷰가 구현하는'SubstitutableDetailViewController' 프로토콜이 있습니다. – CracyD

    +0

    동일한 문제가 있는데, 'SubstitutableDetailViewController' 프로토콜을 사용하는 동일한 Apple 샘플 코드를 사용하고 있습니다. 뷰 컨트롤러가 이전에로드되고 보이지 않을 때 회전 될 때'(void) splitViewController : (UISplitViewController *) svc willShowViewController : (UIViewController *) aViewController invalidatingBarButtonItem : (UIBarButtonItem *) barButtonItem'을받지 못합니다. – avance

    답변

    3

    :-)이 문제를 해결하는 좋은 방법이있다. AppDelegate에는 초기화를 수행하는 코드가 약간 있습니다. didFinishLaunchingWithOptions 메서드에 있습니다. 여기에 거기에가는 코드 :

    UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController; 
    UINavigationController *navigationController = [splitViewController.viewControllers lastObject]; 
    splitViewController.delegate = (id)navigationController.topViewController; 
    

    그들은 모든 분할 뷰 컨트롤러를 작동하는 것이 중요합니다,하지만 마지막 줄은 화재 방법을 얻기위한 가장 라인의 마지막 하나입니다. 나는 보편적 인 응용 프로그램을 만들고 있는데 이것은 없어졌습니다. 내 아이폰쪽에 영향을 미치지 않도록 UI_USER_INTERFACE_IDIOM 체크에 랩핑했다.

    +1

    UI 사용자 인터페이스 관용구 검사에 배치하면 마스터 디테일 응용 프로그램이 Xcode의 템플릿을 통해 생성 될 때 생성 된 AppDelegate.m 코드에서 일어나는 일과 일치합니다. 이 작업을 수행하지 않으면 @selector viewController에 메시지를 보내려고하면 앱이 다운됩니다. –

    관련 문제