QLPreviewController не загружает несколько файлов - PullRequest
0 голосов
/ 14 октября 2018

Я встроил QLPreviewController в качестве контроллера дополнительного представления в мой контроллер представления и настроил делегат и источник данных для него:

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.
Почему это так?Нужно ли что-то настраивать?

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Оказывается, я неправильно понял, как несколько элементов загружаются в QLPreviewController.
Я подумал, что пользователь должен прокрутить вертикально и увидеть боковую панель с миниатюрами.Однако это только для страниц в одном документе.

Мне пришлось прокручивать по горизонтали.
Спасибо @matt, который прояснил это для меня.

0 голосов
/ 14 октября 2018

Весь ваш заголовок о «загрузке нескольких файлов» предлагает неверное представление.Я думаю, вы предполагаете, что QLPreviewController является своего рода контроллером представления коллекции, который отображает несколько объектов одновременно.Это не так.Предварительный просмотр одного документа.Если у него есть несколько элементов предварительного просмотра, пользователь может выполнить боковое перемещение к другому документу или выбрать из меню оглавления, но он по-прежнему показывает только один документ за раз.

Кроме того, вы, похоже, пытаетесь использовать контроллер предварительного просмотра в качестве встроенного.дочерний вид контроллера.Ты не можешьЭто может быть представлено, или помещено в навигационный контроллер;это все.Не пытайтесь сохранить или повторно использовать это.Не используйте его вид в качестве подпредставления.Когда пришло время для предварительного просмотра, создайте контроллер и представьте или нажмите его.Когда контроллер уволен или выскочил, дайте ему умереть.

...