• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - previewController previewItemAt 未被调用。 iOS 10,swift 3,模拟器

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:12:20 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在 Storyboard中创建了一个新的 View Controller 。将其连接到 ListViewController。 ListViewController 将正确的数据填入aboutDict[String:Any]。构建 fileURLs[] 并调用 func numberOfPreviewItems(in: QLPreviewController) -> Int - 调试器显示 fileURLs[] 为预期:

Printing description of self.fileURLs: ▿ 1 element - 0 : file:///Users/kent/Library/Developer/CoreSimulator/Devices/5E23825C-DF99-455A-BEB1-F73398E7759F/data/Containers/Bundle/Application/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)。所以一些的委托(delegate)和数据源函数正在被调用。

我一定错过了一些简单的东西......

我在下面附加了我的类 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
    }
}

我错过了什么?

谢谢。



Best Answer-推荐答案


我刚遇到这个问题,只是因为我忘记在 QLPreviewController 上设置我的数据源...

关于ios - previewController previewItemAt 未被调用。 iOS 10,swift 3,模拟器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42711699/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap