如何让我的UISearchController显示下面的单元格?

时间:2015-05-06 23:09:24

标签: ios uitableview swift uisearchcontroller

我有一个UITableViewController(带有6个单元格)和一个UISearchController。每当我点击搜索栏时,表格视图单元格就会消失并被替换为空的tableView,直到我开始输入内容并显示搜索结果。当我点击搜索栏时,如何才能使单元格保持在下面? 这是我与SearchController有关的代码:

在viewDidLoad()中:

xsl:include

其余的:

self.resultSearchController = ({
            let controller = UISearchController(searchResultsController: nil)
            controller.searchResultsUpdater = self
            controller.dimsBackgroundDuringPresentation = true
            controller.searchBar.sizeToFit()
            controller.searchBar.barTintColor = UIColor(red: 240/255, green: 240/255, blue: 240/255, alpha: 1)

            self.tableView.tableHeaderView = controller.searchBar
            self.definesPresentationContext = true

            return controller
        })()

截图: enter image description here

加成: 有没有办法让这些细胞可选?

2 个答案:

答案 0 :(得分:1)

如果searchText为空,则将filteredTableData设置为items

extension TableViewController: UISearchResultsUpdating {
    func updateSearchResultsForSearchController(searchController: UISearchController) {
        var filteredArray : [TextCell] = [TextCell]()

        if searchController.searchBar.text == "" {
            filteredArray = self.items
        } else {
            for textCell in self.items
            {
                if (textCell.userName.rangeOfString(searchController.searchBar.text) != nil ||
                    textCell.userPreferredName.rangeOfString(searchController.searchBar.text) != nil ||
                    textCell.userText.rangeOfString(searchController.searchBar.text) != nil)
                {
                    filteredArray.append(textCell)
                }
            }
        }
        filteredTableData = filteredArray

        self.tableView.reloadData()
    }
}

答案 1 :(得分:0)

您可以做的是首先填充filteredDataArray而不进行过滤,然后按原样应用过滤。在开始搜索之前,您没有将filteredDataArray设置为任何内容,因此在搜索开始时将其设置为完整数据集。

奖金:

您可以使用tableViewDidSelectRowAtIndexPath来捕获选择,这甚至可以在搜索表视图中使用。