如何将SearchBar连接到其他dataSource?

时间:2016-10-28 03:51:50

标签: ios swift uitableview swift3 uisearchbar

我有一个View下面有一个searchBar和一个相应的TableView,我让它正常工作。我的问题是;是否可以将SearchBar连接到不同的TableView?我是swift和iOS开发的新手,无法找到完成它的方法。这张图片将有助于说明。如您所见,我有一个搜索表视图控制器,它与搜索栏正常工作。 我现在要做的是将SearchBar连接到第二个TableView 。我想这样做是因为我最终会有一个不会连接到SearchBar的TableView,但是当用户点击SearchBar时,新的TableView将覆盖原始的TableView。下面我将展示我的工作TableView的代码,再次我想将SearchBar连接到第二个

  class SearchTableViewController: UITableViewController,UISearchBarDelegate {
    @IBOutlet weak var searchBar: UISearchBar!

    override func viewDidLoad() {
        super.viewDidLoad()
        searchBar.delegate = self

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    struct ApplicationData {
        var items: [String]
        var filteredItems: [String] = []

        init() {
            items = ["John","Sam","Oliver"]
            filterData(search: "")
        }

        mutating func filterData(search: String)
        {

                if search.characters.count>0 {
                filteredItems = items.filter({ (item) in
                    let value1 = item.lowercased()
                    let value2 = search.lowercased()
                    let valid = value1.hasPrefix(value2)
                    return valid


                })

           }
            filteredItems.sort(by: { (value1,value2) in value1 < value2 })
        }
    }
    var AppData = ApplicationData()

    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String){
        if let text = searchBar.text {
            let search = text.trimmingCharacters(in: .whitespaces)
            AppData.filterData(search: search)
            tableView.reloadData()

        }
    }


    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
       return AppData.filteredItems.count
    }


    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "ZipSearch", for: indexPath)
        let data = AppData.filteredItems[indexPath.row]
        cell.textLabel?.text = data
        return cell
    }

}

我在想,也许 tableView.reloadData()代码默认为原始的tableView,但是非常感谢任何帮助。

enter image description here

0 个答案:

没有答案