0

iPhone 응용 프로그램을 iPad에서 작동하도록 변환 중입니다. 이 경우 인터페이스 빌더를 사용하여 사용자 인터페이스를 만들었습니다.UISplitViewController - willShowViewController가 실행되지 않음

  • 탭 컨트롤러
  • 내비게이션 제어기 1
  • 내비게이션 제어기 (2)
  • 탐색 컨트롤러 3 : 루트 컨트롤러 인터페이스 (인덱스 0)이 레이아웃의 탭 제어기 & 탐색 컨트롤러 이루어져

저는 이것을 여러 조각으로 구현했습니다. 탭 컨트롤러 & 탐색 컨트롤러 1을 첫 번째 단계로 설정하면 모든 것이 올바르게 작동합니다. willHideViewController & willShowViewController가 올바르게 작동합니다. 내 인터페이스가 SplitView에서 Popover로 올바르게 전환됩니다. 내비게이션 컨트롤러 2를 추가 할 때 willHideViewController & willShowViewController never fire & iPad가 시뮬레이터 내에서 어떤 방향을 향하고 있는지 항상 알 수 있습니다.

두 번째 네비게이션 컨트롤러를 추가 할 때 인터페이스 빌더 내에서 인터페이스를 올바르게 작동시키기 위해 필요한 다른 것이 있습니까?

답변

0

첫 번째 네비게이션 컨트롤러에 대한 델리게이트를 설정했지만 두 번째 컨트롤러에는 델리게이트를 설정하지 않은 것 같습니다. 위임 객체는 willHideViewController와 같은 메소드를 수신합니다.

여러 탐색 컨트롤러를 사용하는 것이 좋은 스타일인지 확신 할 수 없습니다. 뷰 컨트롤러는 네비게이션 컨트롤러에 배치되었다는 것을 알고 있으므로 self.navigationController를 사용하여 뷰 컨트롤러에 액세스 할 수 있습니다. 동일한 내비게이션 컨트롤러에 뷰 컨트롤러를 계속 밀어 넣어야합니다. 아니면 탭 컨트롤러로하려는 작업을 오해했을 수도 있습니다.

+0

내 프로젝트에 iPad 지원을 추가하기위한 기초로 Xcode 4에서 생성 된 splitView 템플릿을 사용했습니다. 이 splitView 템플릿에서 willShowViewController/willHideViewController를 처리하는 델리게이트는 DetailViewController입니다. RootController가 단일 탭이 구현 된 tabController 이상일 때 모든 것이 작동하기 때문에이 위임은 올바르게 구현되었다고 생각합니다. RootController에 두 번째 탭을 추가하면 일이 멈추는 때입니다. 추가 탭을 제거하면 모든 것이 다시 작동하기 시작합니다. – russes

+0

BTW에는 탭 표시 줄에 탭당 3 개의 탐색 컨트롤러가 있습니다. 탭을 선택하면 해당 탭의 탐색 컨트롤러가 결국 뷰 컨트롤러를 밀어 항목을 선택하게됩니다. 그래서 저는 컨트롤러를 올바르게 사용하고 있다고 확신합니다. 이 구현은 iPhone 앱으로 올바르게 작동합니다. SplitView에서 iPhone 인터페이스가 제대로 작동하도록 만들 때만 문제가 발생합니다. – russes

+0

추가 정보 추가 정보 : (루트) splitView에서 문제를 일으키는 탭은 Stanford 코스 자료에서 제공되는 CortDataTableViewController 클래스로 핵심 데이터 테이블을 구현하는 탭입니다. 이 클래스가 펜촉에 추가되면 실패합니다. 그것을 제거하고 정상적으로 작동합니다. – russes

0

이에 대한 대답은 아주 간단합니다 : 당신은 당신이 모든 세로에서 가로로 정확하게 전환 할 분할 뷰 컨트롤러 &을 구현할 때, 모든 인터페이스 요소 세로 & 가로 레이아웃에 shouldAutorotateToInterfaceOrientation를 구현하는 것이 있는지 확인해야합니다 .