首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QLPreviewController未加载多个文件

QLPreviewController未加载多个文件
EN

Stack Overflow用户
提问于 2018-10-14 09:04:18
回答 2查看 839关注 0票数 0

我在我的视图控制器中嵌入了一个QLPreviewController作为子视图控制器,并为它设置了委托和数据源:

代码语言:javascript
复制
qlPreviewController.delegate = self
qlPreviewController.dataSource = self

在我的viewDidLoad中,我正在下载一个远程文档。下载完成后,我重新加载QLPreviewController以显示该文档。这个很好用。

现在,我想同时显示多个文档。为此,我下载多个文档,设置一个数组,然后重新加载QLPreviewController

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

代码语言:javascript
复制
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
}

结果是只显示一个文档,这是数组中的第一个文档。我添加了上面的print语句,以验证downloadedDocuments数组中有多个文档。它打印:

代码语言:javascript
复制
count: 5
1/5, id: 251

如您所见,它只调用previewItemAtIndex一次,索引仍然是0

为什么会这样呢?我还需要设置其他的东西吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-14 10:38:30

结果,我误解了如何在QLPreviewController中加载多个项。

我想,用户必须垂直滚动,并看到边条与缩略图。但是,这只适用于单个文档中的页面。

我不得不水平滚动。

多亏了马特,他帮我澄清了这件事。

票数 0
EN

Stack Overflow用户

发布于 2018-10-14 09:55:45

您的整个标题,关于“加载多个文件”,表明了一种误解。我认为您假设QLPreviewController是一种集合视图控制器,它同时显示多个对象。不是,它预览了一份文件。如果它有多个预览项,用户可以侧页到另一个文档,或者从TOC菜单中选择,但它仍然一次只显示一个文档。

此外,您似乎试图使用预览控制器作为嵌入式。子视图控制器你不能,它可以呈现,或者推到导航控制器上,仅此而已。不要试图保留或重用它。不要使用它的视图作为子视图。当是预览的时候,创建控制器并呈现或推送它。当控制器被解职或弹出时,让它死掉。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52801100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档