2017-12-08 9 views
0

기존 TVOS 프로젝트를 업데이트해야합니다. 나는 약간의 걸림돌에 빠져 들었다. (. 예 : 앱 시작에 선물 컨트롤러) 내가 루트 컨트롤러입니다 경우TVOS에서 2 개의 메뉴 버튼이 필요합니다. 루트 컨트롤러에서 대시 보드로 나가려면 누르십시오

메뉴 버튼을 누르면 빈 회색/흰색 화면에 저를합니다. 두 번째 메뉴를 누르면 대시 보드로 돌아갑니다.

계층 뷰어를 사용하여 회색/흰색 화면이 정확히 무엇인지 확인하려했지만 도움이되지 않았습니다. 회색/흰색 화면은 하나의 UINavigationTransitionView가 포함 된 UIWindow와 UILayoutContainerView로 구성됩니다. 정확히 무슨 일이 일어나는지 파악하는데 도움이되는 다른 식별 할 수있는 특징을 찾을 수 없습니다.

앱이 시작되면 UIViewController를 표시하는 UINavigationController가로드됩니다. Nav 컨트롤러 나 제시된 ViewController는 pressBegin을 오버라이드하지 않고 End를 누르거나 제스처 리코 네이 저를 할당하여 Menu 버튼 기능을 가로 채거나 무시합니다.

근처에있는 앱은 기본 메뉴 버튼을 눌러 루트로 돌아간 다음 루트에서 한 번 대시 보드로 빠져 나가야합니다. 즉, 메뉴 버튼은 뒤로 이동합니다. 루트에서 응용 프로그램을 종료하지 않습니다. 회색/흰색 화면으로 이동하면 아무 기능도 안됩니다 : applicationWill ...은 리모컨의 두 번째 Menu 버튼을 누를 때까지 실행됩니다. 앱이이 회색/흰색 화면으로 재개됩니다.

제 질문은 여기에서 진행되고 있습니다. 어떻게하면 나는 이 동작을보다 효과적으로 디버깅 할 수 있습니다.

나는이 설명과 함께 철저히 노력했다. 나는 코드 없이는 일이 어려워진다는 것을 알고 있습니다. 즉, 어떤 코드가 관련이 있는지 알지 못하므로 유용 할 수있는 특정 코드에 대한 지침이나 요청이 게시됩니다.

감사합니다.

답변

1

내비게이션 컨트롤러 A과 제시된보기 컨트롤러를 B이라고 부릅시다.

실제로는 A에 실제로 하위 항목이 없거나 하위보기 컨트롤러가 비어 있습니다. ApushViewController(_, animated:) 번으로 전화하지 않는다고 가정하고 있습니까? init(rootViewController:)으로 만들 때 A으로 전달할 대상은 무엇입니까?

처음으로 메뉴 버튼을 누르면 UIKit에서 제시된보기 컨트롤러 B을 자동으로 닫고 빈 탐색 컨트롤러 A을 나타냅니다. 회색 화면은 실제로 앱의보기 계층 구조 외부에서 렌더링되는 tvOS 배경 화면입니다.

내비게이션 컨트롤러 A에 더 이상 아이들을 팝업 할 수 없기 때문에 두 번째로 메뉴 버튼을 누르면 실제로 앱이 사임합니다.

  • 대신 그것을 제시의, A의 자식으로 뷰 컨트롤러 B을 추가

    그래서 당신이 중 하나를해야처럼 들린다.

  • 또는 B을 루트보기 컨트롤러로 설정하고 A을 잊어 버리십시오.

+0

귀하의 평가는 옳았습니다. 앱은 사실 "pushViewController"가 아니라 "present"를 호출했습니다. "현재"를 "푸시"로 전환하면이 문제가 해결됩니다. 귀하의 답변은 가정과 철저한 교육을 받았습니다. 정말 고마워. – Azethoth