2016-11-15 2 views
1

나는 보편적으로 만들려고 노력하는 iPhone 응용 프로그램이 있습니다. 이 코드를 가지고 :iPad에서 View Controller를 제공하면 .Popover 만 허용됩니다.

let documentMenu = UIDocumentMenuViewController(documentTypes: [kUTTypeContent as String], inMode: .Import) 
documentMenu.modalPresentationStyle = .FormSheet 
documentMenu.delegate = self 
self.presentationContext.presentViewController(documentMenu, animated: true, completion: nil) 

self.presentationContext 그냥 클래스에 전달 뷰 컨트롤러입니다.

이 코드가 실행될 때마다,이 오류가 발생합니다

귀하의 응용 프로그램은 UIDocumentMenuViewController을 선사하고있다(). 현재의 특성 환경에서이 스타일을 사용하는 UIDocumentMenuViewController의 modalPresentationStyle은 UIModalPresentationPopover입니다. 뷰 컨트롤러의 popoverPresentationController를 통해이 팝업에 대한 위치 정보를 제공해야합니다. sourceView와 sourceRect 또는 barButtonItem을 제공해야합니다. 보기 컨트롤러를 표시 할 때이 정보를 알 수없는 경우 UIPopoverPresentationControllerDelegate 메소드 -prepareForPopoverPresentation에 제공 할 수 있습니다.

나는 무슨 일이 일어나고 있는지 잘 모르겠습니다. 나는 심지어 sourceViewsourceRect을 설정하려고 시도했지만, 오류를 막을 수는 있지만 DocumentMenuViewController을 popover에 집어 넣었습니다. 이것을 모달 스크린 중앙에 표시해야합니다. 어떤 도움을 주셔서 감사합니다.

답변

1

UIDocumentMenuViewController은 더 작은 "popover"프리젠 테이션 스타일 이외의 다른 것으로 표시되기를 원하지 않습니다. 자체 구현은 modalPresentationStyle에서 .Popover까지의 설정보다 우선합니다. 따라서 스타일을 .FormSheet으로 설정하려는 시도는 결국 무시됩니다.

이것은 오류의 원인입니다. 스타일이 .Popover이면 오류 내용을 수행하고 sourceViewsourceRect 또는 barButtonItem의 적절한 조합을 설정해야합니다.

다른 모달 프리젠 테이션 스타일을 지원하도록 Apple에 강화 요청을 제출하십시오. 그 동안 UI를 조정해야합니다.

+0

내가 틀렸다고 말하는 것은 아니지만 귀하의 주장을 뒷받침하는 문서가 있습니까? – crizzwald

+0

불행히도 없습니다. 내 대답은'UIDocumentMenuViewController'를 사용한 실용적인 경험을 바탕으로하고 여러분의 경험에서 본 자신의 경험은 내가 본 것과 일치합니다. – rmaddy