2

我有一个像这样为我的 UITableView 类创建的搜索栏,如下所示,

 class customTableViewController: UITableViewController,              UISearchResultsUpdating
{....
override func viewDidLoad() {
    super.viewDidLoad()

self.resultSearchController = ({
        let controller = UISearchController(searchResultsController: nil)
        controller.searchResultsUpdater = self
        controller.dimsBackgroundDuringPresentation = false
        controller.searchBar.sizeToFit()
        controller.hidesBottomBarWhenPushed = false
        controller.hidesNavigationBarDuringPresentation = false
        controller.searchBar.searchBarStyle = UISearchBarStyle(rawValue: 2)!

        self.tableView.tableHeaderView = controller.searchBar

        return controller
    })()
    self.tableView.reloadData()
    }
}

它工作正常,只是当我转到另一个视图控制器时,搜索栏的图像仍然绘制在我的屏幕上,无论我在哪个视图控制器中。当我尝试“searchBar.active = false”时,我得到 nil错误。

我该怎么做才能使这个 searchBar 只绘制在这个 tableViewController 上,而在我的导航中没有其他地方?

万分感谢。

4

1 回答 1

0

我找到了一些解决方法,在我的 prepareToSegue 中,我说:

   self.resultSearchController.searchBar.hidden = true
   self.resultSearchController.view.endEditing(true)

就是这样,在destinationViewController 中,我编写了下面的代码来识别它返回到originalViewController 并重新绘制条形图。

override func viewWillDisappear(animated: Bool) {
    ....
    resultSearchController.searchBar.hidden = false
}
于 2015-08-06T05:46:51.763 回答