2011-04-27 5 views
2

가로 모드에서 실행되는 iPad 앱을 개발하고 있습니다.willHideViewController는 가로 모드의 앱 임에도 불구하고 호출되었습니다

첫 번째 화면은 UISplitViewController를 표시하고 내 문제 앱이 가로 모드에 입력해도 대리인이 문서한다고 그럼에도 불구하고 splitViewController:willHideViewController:withBarButtonItem:forPopoverController:에 통지한다는 것입니다 :

가 분할 뷰 컨트롤러가에서 를 회전하면 가로 방향 방향으로 이동하면 일반적으로 중 하나의보기 컨트롤러가 숨겨집니다. 이 발생하면이 메서드를 나머지 사용자 지정보기 컨트롤러의 도구 모음 (또는 탐색 모음)에 단추 추가를 조정합니다. 곧 표시 될 숨겨진보기 컨트롤러를 popover에 표시하려면이 메서드를 구현하고이를 사용하여 지정된 단추를 인터페이스에 추가해야합니다.

응용 프로그램이 가로 모드이고 세로로 전환하지 않으므로 내 대의원에게 알리는 이유가 없습니다. 왜 그래야만하지?

답변

0

valentin, "왜 그렇습니까?"라고 직접 대답하려면 대답은 단순히 API 구현의 버그라고 생각합니다.

가로 방향으로 보았을 때 위와 같이 호출하면 안되는 것처럼 보이고 splitViewController : willShowViewController : invalidatingBarButtonItem :을 호출합니다.

또한 세로 방향 인 경우 매우 초기 메시지 (즉, view.frame이 조정되기 전)가 splitViewController:willHideViewController:withBarButtonItem:forPopoverController:으로 전송된다는 것을 발견했습니다.

내가 가장 괴롭히는 한 가지는 템플릿 작성에서 제공된 코드를 사용하여 단추 표시 줄이 나타나고 시작시 사라지는 것입니다.

내 해결책은 [email protected]에 게시 한 해결 방법을 구현하는 것이 었습니다. johnkdoe/freeforall.git 클래스 KludgeWorkaroundForBuggySplitViewDelegateStartup에 게시했습니다.

//@interface MyViewController : UIViewController<UISplitViewControllerDelegate> 
@interface MyViewController : KludgeWorkaroundForBuggySplitViewDelegateStartup 

당신이 원하는 무엇인가가없는 경우이 마스터하는 최초의 버튼 모음 제목을 설정합니다 같이이 현재 상세 뷰 컨트롤러 클래스의 슈퍼 클래스합니다. 하위 클래스 구현에서 @property getter를 재정 의하여이를 재정의 할 수 있습니다. 이 kludgeWorkaround 클래스에있는 것보다 더 많은 일을하고 싶다면, 자신의 작업을 수행하기 전에이 작업을 무시하고 (복사 및 붙여 넣기 또는) [super ...]를 호출 할 수 있습니다.

내가 구현 버그 인 것처럼 보이는 문제를 해결할 수는 없지만 해결 방법을 사용하면 가로보기 모드에서 분할보기 컨트롤러 응용 프로그램을 시작할 때 버튼 막대가 간략하게 보이지 않게됩니다. .

관련 문제