У меня есть 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-файл, который был найден.