Как передать правильный индекс PDF, когда поиск активен Swift - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть TableView, где при нажатии на ячейку открывается определенный файл PDF в другом viewController.Я добавил searchBar и настроил его так, чтобы при его фильтрации по результатам поиска определенного PDF он должен был открывать этот конкретный PDF в новом viewController.Это не;он либо передает PDF из первого индекса, либо из третьего индекса, и я не уверен, почему он это делает.Я полагаю, что это может быть связано с тем, как я настраивал PDF-файлы, просматриваемые на новом viewController.

Я рассмотрел подобные вопросы здесь, и они помогли мне правильно настроить фильтрацию поиска, но в конечном итоге не исправилиМоя проблема в передаче правильного индекса, связанного с искомым PDF.

Вот код для TableView, который содержит файлы PDF:

class TableViewController: UITableViewController, UISearchResultsUpdating{

 var PDFs = [String]()
 var selectedIndexPath: IndexPath = IndexPath()
 var filteredPDFs = [String]()
 var resultsSearchController = UISearchController()
 var myIndex = 0

 override func viewDidLoad() { 
   PDFs = ["1", "2", "3" ,"4", "5", "6", "7"]
  }

 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    if (resultsSearchController.isActive) {
        return filteredPDFs.count
    } else {
        return PDfs.count
       }
  }

 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! Cell
    if (resultsSearchController.isActive) {
        cell.textLabel?.text = filteredPDFs[indexPath.row]   
    } else {
        cell.PDFKitLabel?.text = PDFs[indexPath.row]
    }
    return cell
  }

 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    if (self.resultsSearchController.isActive) {
        myIndex = filteredPDFs.firstIndex(of: filteredPDFs[selectedIndexPath.row])!
    } else {
     self.selectedIndexPath = indexPath
    }
        self.performSegue(withIdentifier: "openPDF", sender: self)
 }

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "openPDF" {
        let detailViewController = segue.destination as! DetailViewController
       detailViewController.pdfName = PDFs[self.selectedIndexPath.row]
    }
  }

Вот код для ViewController, который открывает файлы PDF:

class DetailViewController: UIViewController {

var fldName: String?
 override func viewDidLoad() {
    super.viewDidLoad()


    let pdfView = PDFView()
    pdfView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(pdfView)
    pdfView.displayMode = .singlePageContinuous
    pdfView.displaysAsBook = true
    pdfView.displayDirection = .vertical


    let fileURL = Bundle.main.url(forResource: pdfName, withExtension: "pdf")
    pdfView.document = PDFDocument(url: fileURL!)

}

Я хочу иметь возможность при поиске определенного PDF-файла выбрать заголовок PDF-файла из результатов поиска и затем передать этот PDF-файл в новый viewController для просмотра, но, как уже упоминалось ранее, при попытке передатьPDF из результатов поиска открывает PDF-файл только из индекса 0, а не конкретный PDF-файл, который был найден.

...