2016-11-14 6 views
1

私は多くの異なるファイルをユーザーに表示するiOSアプリケーションで作業しています。ビデオやオーディオファイルからhtmlファイル、Office/iWorksファイルへ。 QLPreviewControllerをサブクラス化し、これらのファイルの一部を表示するために使用します。私はオブジェクトを作成し、それにファイルのURLを渡し、ViewControllerのビューのフレームを親ViewControllerのWebViewのフレームに置き換えます。 :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文として「!PO self.view.superview .frame」を使用してクイックルックのスーパービューが設定されていることを確認するためのviewDidLoadでブレークポイントを使用して、再度受信:私は期待して出てきます私が期待した出力。

私は、この同じクラスをアプリ内の別のビュースタックに使用し、クリックされたファイルを表示するので、私には分かりません。 2つの用途の唯一の違いは、2番目はviewControllerでモーダル表示されたquickLookのビューです。

答えて

0

ok私が持っていた問題の答えを投稿したいと思いました。問題は、親と子の関係を持つContentDisplayViewControllerにquickLookビューコントローラを追加していないことでした。だから私は望んでいたビューを追加するための更新されたコードは次のようになります。

//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) 

この質問は私に答えを与えた: Add child view controller to current view controller

は、に読み込むために私私のポスト@Piyushパテルためのおかげで、いくつかの読み物を与えました

関連する問題