Просмотр PDF не представлен - PullRequest
0 голосов
/ 30 сентября 2019

Я загружаю PDF из URL, а затем отображаю его с помощью PDFKit в Swift5. Тем не менее, когда я нажимаю на viewCell, он не представляет PDF и, возможно, не загружает PDF. Как я могу это проверить?

У меня есть два файла, PlanogramViewController и ShowPDFViewController.

var pdfURL: URL!

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if let plano = self.data[indexPath.row] as? Planogram {
            guard let url = URL(string: Plano.pdfUrl) else { return }

            let urlSession = URLSession(configuration: .default, delegate: self, delegateQueue: OperationQueue())

            let downloadTask = urlSession.downloadTask(with: url)
            downloadTask.resume()

            let pdfViewController = ShowPDFViewController()
            pdfViewController.pdfURL = self.pdfURL
            present(pdfViewController, animated: false, completion: nil)
            tableView.deselectRow(at: indexPath, animated: true)
        }

    }

extension PlanogramViewController:  URLSessionDownloadDelegate {
    func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
        print("downloadLocation:", location)
        // create destination URL with the original pdf name
        guard let url = downloadTask.originalRequest?.url else { return }
        let documentsPath = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask)[0]
        let destinationURL = documentsPath.appendingPathComponent(url.lastPathComponent)
        // delete original copy
        try? FileManager.default.removeItem(at: destinationURL)
        // copy from temp to Document
        do {
            try FileManager.default.copyItem(at: location, to: destinationURL)
            self.pdfURL = destinationURL
        } catch let error {
            print("Copy Error: \(error.localizedDescription)")
        }
    }
}

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

Тогда вот pdfViewController, который он должен представить после загрузки PDF:

import UIKit
import PDFKit


class ShowPDFViewController: UIViewController {

    var pdfView = PDFView()
    var pdfURL: URL!

    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(pdfView)

        if let document = PDFDocument(url: pdfURL) {
            pdfView.document = document
        }

        DispatchQueue.main.asyncAfter(deadline: .now()+3) {
            self.dismiss(animated: true, completion: nil)
        }
    }

    override func viewDidLayoutSubviews() {
        pdfView.frame = view.frame
    }
}

В настоящее время он просто выделяет ячейку, которую я нажал. Ничего в консоли и ничего не отображается на дисплее.

1 Ответ

0 голосов
/ 30 сентября 2019

Вам необходимо соответствовать протоколам UITableViewDelegate и UITableViewDataSourceDelegate в контроллере представления, который имеет tableView.

и добавить

tableView.delegate = self
tableView.dataSource = self

в viewDidLoad ()

Затем реализуйте необходимые методы и добавьте дополнительные методы для дальнейшей настройки вашего tableView.

...