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