2017-03-10 15 views
1

私はストーリーボードに新しいView Controllerを作成しました。それをListViewControllerに接続しました。 ListViewControllerは、正しいデータをaboutDict[String:Any]に入力します。 fileURLs[]が構築され、func numberOfPreviewItems(in: QLPreviewController) -> Intが呼び出される - デバッガはfileURLs[]は次のように期待されて示していますself.fileURLsのpreviewController previewItemAtが呼び出されていません。 iOS 10、swift 3、simulator

印刷の説明:▿1要素 - 0:ファイル:///ユーザ/ケント/ライブラリ/開発者/ CoreSimulator /デバイス/ 5E23825C-DF99-455A-BEB1-F73398E7759F /データ/コンテナ/バンドル/アプリケーション/ 307ED7DF-C07C-4C0A-BA78-938BABE7C22C/WINSystemInfo.app/ID-51A_E_PLUS2.pdf`

しかし、 func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItemfunc previewController(_ controller: QLPreviewController, shouldOpen url: URL, for item: QLPreviewItem) -> Boolは呼び出されません。

戻るボタンの正しい名前を持つナビゲーションスタックにプッシュされた素敵なViewControllerと、「プレビューするファイルがありません」というテキストを中心とするグレーのページが表示されます。

「戻る」ボタンを押すと、func previewControllerWillDismiss(_ controller: QLPreviewController)が呼び出されます。したがってデリゲートとデータソース関数のいくつかのが呼び出されています。

私は...

を簡単な何かが欠けする必要があります私は以下の私のクラスFileViewController.swiftを添付:

class FileViewController: QLPreviewController, QLPreviewControllerDelegate, QLPreviewControllerDataSource { 

    var aboutDict = [String: Any]() 

    // QuickLook data 
    var fileURLs = [QLPreviewItem]() 

    // MARK: - Lifecycle 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let filename = aboutDict["filename"] as! String? 
     let filetype = aboutDict["filetype"] as! String? 

     title = aboutDict["title"] as! String? 
     dataSource = self 
     delegate = self 

     if let fileUrl = Bundle.main.url(forResource: filename, withExtension: filetype, subdirectory: nil, localization: nil) 
     { 
      let filePreview = fileUrl as QLPreviewItem 
      fileURLs.append(filePreview) 
     } 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    // MARK: - Preview controller datasource functions 

    func numberOfPreviewItems(in: QLPreviewController) -> Int { 
     return fileURLs.count 
    } 

    func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem { 
     return fileURLs[index] 
    } 

    // MARK: - Preview controller delegate functions 

    func previewControllerWillDismiss(_ controller: QLPreviewController) { 
     debug("previewControllerWillDismiss") 
    } 

    func previewController(_ controller: QLPreviewController, shouldOpen url: URL, for item: QLPreviewItem) -> Bool { 
     return true 
    } 
} 

私は何をしないのですか?

ありがとうございます。

+0

あなたはそれを修正しましたか? –

+0

おそらく最も良いことは、バグレポート(bugreport.apple.com)を提出して、実際にバグかどうかを確認することです。 – Raffael

+0

sebastian-roth - まだ動作しません。 – Kent

答えて

0

私はこの問題を抱えていたと私はQLPreviewControllerに私のデータソースを設定するために忘れていたので、それは単にだった...

関連する問題