swift:UISearchcontroller在搜索开始之前/之后显示不同的tableviews

时间:2016-08-26 12:20:39

标签: swift uitableview search

我有一个工作的tableview,我实现了UISearchController。现在我想在搜索操作开始之前和之后显示2个不同的tableviews,例如instagram,twitter。我想显示一个不同的tableview,将最近的搜索显示为列表。

我的故事板设置是:

- > tabbar - > navbar - > SearchResultsTableViewController - > navbar - > recentSearchesTableView

我在searchResultsTableView中有一个searchBar。

class SearchResultsTableViewController: UITableViewController, SearchTableViewControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()        
        if ((self.searchResults?.count) == 0) {
            performSegueWithIdentifier("ShowSearchView", sender: self)
        }
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "ShowSearchView" {
            if let destinationNavigation = segue.destinationViewController as? UINavigationController {
                if destinationNavigation.viewControllers.count > 0 {
                    if let searchVC = destinationNavigation.viewControllers[0] as? SearchTableViewController {
                        searchVC.delegate = self
                    }
                }
            }
        }
    }

有没有办法在不使用segues的情况下实现这个目标?

2 个答案:

答案 0 :(得分:1)

您可以根据用户在搜索栏上键入的内容更改主表视图内容,而不将其发送到另一个视图,但我不知道您是否要显示2个表而不是一个,例如,如果搜索者为空,表格视图可以显示最近的搜索,如果不是,表格显示与搜索栏内容相关的内容,您能更具体吗?

答案 1 :(得分:1)

我同意@Luis Perez,不要使用两个表格。

继承人我会做什么

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 2
    }

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if indexPath.section == 0 {
       return recentSearches.count
    } else {
        if searchController.active && searchController.searchBar.text! != "" {
           return searchResults.count
        }
        return 0
    }
}

注意:因为我知道你想要使用2个表格,所以你可以让截面分割看起来像你想要的