繁体   English   中英

QuickLook使用UINavigationController预览模式中的文件

[英]QuickLook to preview files in an modal with UINavigationController

我想使用Quicklook预览应用程序中的某些文档。

有一个fileUrls数组,我想在UITableView中显示所有文件名。 当用户单击fileName时,将不加载所选文件。

这里的问题是,委托在viewDidLoad时自动触发,并检查所选文件,但是我想将Quicklook-Controller推送到我现有的UINavigationController中。

生病时尝试:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    currentFile = TaskFiles[indexPath.row]
    self.navigationController?.pushViewController(preview, animated: false)
}

func numberOfPreviewItemsInPreviewController(controller: QLPreviewController) -> Int {
    return 1
}

func documentsDirectoryURL() -> NSURL {
    let manager = NSFileManager.defaultManager()
    let URLs = manager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
    return URLs[0]
}

func previewController(controller: QLPreviewController, previewItemAtIndex index: Int) -> QLPreviewItem {
    return documentsDirectoryURL().URLByAppendingPathComponent(currentFile!.url!)
}

它崩溃,因为(当然)未选择该文件。 生病时使用其他viewController,并将currentFile推送到新的ViewController,然后使用以下命令在ViewDidLoad上打开文件:

    let preview = QLPreviewController()
    presentViewController(preview, animated: true, completion: nil)

控制器以全屏显示,但我不希望在我现有的UINavigationController中显示我的文件。 有没有办法做到这一点? 我是否需要一个额外的ViewController,还是可以简单地将文件推送到UINavigationcontroller中的Quicklookcontroller中?

更新:

这是我的ViewDidLoad:

class ModalFormCaptureFilePreviewViewController: UIViewController,     QLPreviewControllerDataSource, QLPreviewControllerDelegate {

var currentFile:Files?
let preview = QLPreviewController()

override func viewDidLoad() {
    super.viewDidLoad()
    preview.dataSource = self
    showViewController(preview, sender: self)
}
let preview = QLPreviewController()
showViewController(preview, sender: self)

会工作,因为presentViewController使用modalPresentationStyle

已编辑

这应该工作

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    currentFile = TaskFiles[indexPath.row]
    let preview = QLPreviewController()
    preview.dataSource = self
    self.navigationController?.pushViewController(preview, animated: false)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM