2016-11-14 9 views
1

다른 많은 파일을 사용자에게 표시하는 iOS 응용 프로그램에서 작업 중입니다. 비디오 및 오디오 파일에서 html 및 Office/iWorks 파일. 나는 QLPreviewController를 서브 클래 싱 (subclassed)했으며,이 파일들을 표시하기 위해 그것을 사용하고 싶다. 개체를 만들고, 파일의 URL을 전달하고, 부모 View Controller에서 WebView의 프레임을 대체 할 ViewController의보기 프레임을 설정합니다. : 뷰 디버그 계층 구조 도구를 사용하여iOS 10, QLPreviewViewController가 파일을 표시하지 않습니다.

else if (QuickLookViewController.canOpenFile(previewItem: contentUrl as NSURL)) { 

    hideControls() 
    quickLook.contentURLs = [contentUrl as NSURL] 

    //add the QuickLookController's view to content display using webview's frame 
    self.view.addSubview(quickLook.view) 

    quickLook.view.frame = webview!.frame 
    quickLook.reloadData() 

, 그것은 quickLook.backgroundColor = UIColor.black 그냥 테스트 설정이 올바르게 설정보기뿐만 아니라 보여줍니다.

은 그래서 어쩌면 내가 파일이 있는지 확인하기 위해 몇 가지 검사를 추가 QuickLookController의 viewDidLoad에의하므로, 다운로드 및 저장 파일에 액세스에 문제가 있다고 생각 :

super.viewDidLoad() 
print("\nContent URL: \(contentURLs[0])") 
print("\nContent URL Path: \(contentURLs[0].path!)") 

self.delegate = self 
self.dataSource = self 
var error : NSError? 

print("\nis reachable: \(contentURLs[0].checkResourceIsReachableAndReturnError(&error))") 
if (error != nil) { 
    print("is reachable error -> \(error.debugDescription)") 
} 
print("\ndoes exist: \(FileManager.default.fileExists(atPath: contentURLs[0].path!))") 
print("\nCan open: \(QuickLookViewController.canOpenFile(previewItem: contentURLs[0]))") 

및 로그 문

Content URL: file:///var/mobile/Containers/Data/Application/B9D5C288-F889-4513-941E-2564F1C12F02/Documents/588c5a1e-dffe-47a8-9824-bc19463aafc2/d88a8dd5-40d1-4fdb-adf3-10fce1f6bf1f/fd73c162-5ac3-4269-8573-9c0b61bef7a7/fd73c162-5ac3-4269-8573-9c0b61bef7a7.pages 

Content URL Path: /var/mobile/Containers/Data/Application/B9D5C288-F889-4513-941E-2564F1C12F02/Documents/588c5a1e-dffe-47a8-9824-bc19463aafc2/d88a8dd5-40d1-4fdb-adf3-10fce1f6bf1f/fd73c162-5ac3-4269-8573-9c0b61bef7a7/fd73c162-5ac3-4269-8573-9c0b61bef7a7.pages 

is reachable: true 

does exist: true 

Can open: true 

나는 심지어는 llbd 문으로! '포 self.view.superview .frame'를 사용하여 QuickLook에서의 수퍼가 설정되어 있는지 확인하여있는 viewDidLoad에 중단 점을 사용하고, 다시 접수 : 내가 예상대로 나오지 내가 예상 한 결과.

동일한 클래스를 앱의 다른보기 스택에 사용하고 클릭 한 파일을 표시하므로 나에게 의미가 없습니다. 두 가지 용도의 유일한 차이점은, 두 번째는 모달로 제공되는 viewController에서 quickLook의 뷰를 제공한다는 것입니다.

답변

0

ok 제가 궁금해했던 문제에 대한 답변을 게시하고 싶습니다. 문제는 부모 - 자식 관계가있는 ContentDisplayViewController에 quickLook 뷰 컨트롤러를 추가하지 않는 것이 었습니다. Add child view controller to current view controller

나에게 나에게로 읽을 수있는 몇 가지 독서 자료를 준 후 @Piyush 파텔 주셔서 감사합니다 :

//create the parent-child relationship for the view controllers 
self.addChildViewController(quickLook) 

//give the view it's frame 
quickLook.view.frame = webview!.frame 

//add the view and call the child's didMove() method. 
self.view.addSubview(quickLook.view) 
quickLook.didMove(toParentViewController: self) 

이 질문은 나에게 답을 주었다 같은 업데이트 된 코드는 내가 원하는 뷰가 보이는 추가