簡體   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