Swift xcode IOS, возврат к просмотру таблицы после выбора результата поиска - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь создать приложение-шутку. Панель поиска работает. Но когда я выбираю результаты поиска, это не приведет меня к представлению таблицы (шутки). Как я могу это исправить? Спасибо всем заранее.

enter image description here enter image description here

import UIKit

class JokeTableViewController: UITableViewController, UISearchResultsUpdating {


    var jokes = [ "chiken", "Walk into A Bar", "Olives", "Racer", "love"]
    var filteredJokes = [String]()

    var searchController : UISearchController!
    var resultsController = UITableViewController()

    override func viewDidLoad() {
        super.viewDidLoad()

        self.resultsController.tableView.dataSource = self
        self.resultsController.tableView.delegate = self

        self.searchController = UISearchController(searchResultsController: self.resultsController)
        self.tableView.tableHeaderView = self.searchController.searchBar
        self.searchController.searchResultsUpdater = self
        //self.searchController.dimsBackgroundDuringPresentation = false

    }

    func updateSearchResults(for searchController: UISearchController) {
        self.filteredJokes = self.jokes.filter { (jokee:String) -> Bool in
            if jokee.lowercased().contains(self.searchController.searchBar.text!.lowercased()){
                return true
            }else {
                return false
            }
        }
        //Update the results TableView
        self.resultsController.tableView.reloadData()

    }


    //WHEN SELECTED TO TO THE JOKES


    // HOW MANY?
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if tableView == self.tableView{
            return self.jokes.count
        } else  {
            return self.filteredJokes.count
        }
    }

    //WHAT GOES INSIDE?

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

        if tableView == self.tableView{
            cell.textLabel?.text = self.jokes[indexPath.row]
        } else{
            cell.textLabel?.text = self.filteredJokes[indexPath.row]
        }

        return cell
    }

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


        let selectedJoke = jokes[indexPath.row]

        performSegue(withIdentifier: "moveToJokeDefinition", sender: selectedJoke)


    }

    override func prepare( for segue: UIStoryboardSegue, sender: Any?){
        if let jokeVC = segue.destination as? JokeDefinitionViewController{

            if let selectedJoke = sender as? String {
             jokeVC.joke = selectedJoke
            }
           //select the jokes

        }
    }

}

1 Ответ

0 голосов
/ 19 марта 2020

Вы должны использовать одну глобальную переменную. var globaldata = String self.globaldata = self.jokes .... initData ............

вы должны использовать эти данные в функциях TableView Delegate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...