搜索处于活动状态时如何传递正确的PDF索引

时间:2019-04-23 16:51:26

标签: uisearchbar ios-pdfkit

我有一个TableView,在其中点击一个单元格时,它将在另一个viewController中打开一个特定的PDF文件。我添加了searchBar并将其设置为当它通过特定PDF的搜索结果进行过滤时,应该在新的viewController中打开该特定PDF。它不是;它要么通过第一个索引,要么通过第三个索引传递PDF,但我不确定为什么这样做。我相信可能是我如何在新的viewController上设置要查看的PDF。

我在这里查看了类似的问题,它们帮助我使搜索过滤正常工作,但最终没有解决传递与搜索的PDF相关的正确索引的问题。

这里是保存PDF的TableView的代码:

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]
    }
  }

以下是打开PDF的ViewController的代码:

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时它只会打开索引0中的PDF,而不会打开搜索到的特定PDF。

0 个答案:

没有答案