2017-03-10 58 views
1

我在故事板中创建了一个新的视图控制器。将它连接到ListViewController。 ListViewController将正确的数据填入aboutDict[String:Any]。该fileURLs[]是建立和func numberOfPreviewItems(in: QLPreviewController) -> Int被称为 - 调试器显示fileURLs[]不出所料:self.fileURLs的previewController previewItem未被调用。 iOS 10,swift 3,模拟器

印刷描述:▿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,它被推入到导航堆栈中,后退按钮的名称正确,灰色页面中心文本为“无文件预览”。

按'back'按钮,调用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

塞巴斯蒂安罗斯 - 没有仍然没有工作。 – Kent

回答

0

我只是有这个问题,它仅仅是因为我忘了把我的数据源上QLPreviewController ...