gpt4 book ai didi

ios - QLPreviewController 不加载多个文件

转载 作者:行者123 更新时间:2023-11-28 14:08:16 26 4
gpt4 key购买 nike

我在我的 View Controller 中嵌入了一个 QLPreviewController 作为 subview Controller ,并为其设置了委托(delegate)和数据源:

qlPreviewController.delegate = self
qlPreviewController.dataSource = self

在我的 viewDidLoad 中,我正在下载一个远程文档。下载完成后,我重新加载 QLPreviewController 以显示该文档。这很好用。
现在,我想同时显示多个文档。因此,我下载了多个文档,设置了一个数组,然后重新加载 QLPreviewController

下面是实现的数据源方法:

func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
print("count:", downloadedDocuments.count)
return downloadedDocuments.count
}

func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
print("\(index+1)/\(downloadedDocuments.count), id:", downloadedDocuments[index].id)
return downloadedDocuments[index].localURL as QLPreviewItem
}

最终发生的是只有一个文档被显示,它是数组中的第一个。我在上面添加了打印语句,以验证 downloadedDocuments 数组中是否有多个文档。它打印:

count: 5
1/5, id: 251

如您所见,它只调用了一次 previewItemAtIndex,索引保持为 0
这是为什么?我还需要设置其他任何东西吗?

最佳答案

关于“加载多个文件”的整个标题暗示了一种误解。我认为您假设 QLPreviewController 是一种同时显示多个对象的 Collection View Controller 。不是。它预览一个文档。如果它有多个预览项目,用户可以横向翻页到另一个文档,或者从 TOC 菜单中选择,但它仍然一次只显示一个文档。

此外,您似乎正在尝试将预览 Controller 用作嵌入式。 subview Controller 。你不能。它可以呈现或推送到导航 Controller 上;就这样。不要试图保留或重复使用它。不要将其 View 用作 subview 。当需要预览时,创建 Controller 并呈现或推送它。当 Controller 被解雇或弹出时,让它死掉。

关于ios - QLPreviewController 不加载多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52801100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com