繁体   English   中英

Swift xcode IOS,选择搜索结果后返回tableview

[英]Swift xcode IOS, return to tableview after selecting a search result

我正在尝试创建一个笑话应用程序。 搜索栏有效。 但是当我选择搜索结果时,它不会带我到 tableview(笑话)。 我该如何解决? 提前谢谢大家。

在此处输入图片说明在此处输入图片说明

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

        }
    }

}

您应该使用一个全局变量。 var globaldata = String self.globaldata = self.jokes .... initData................

您应该在 tableView 委托函数中使用此数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM