搜索栏错误地叠加在导航控制器的多个视图控制器中

时间:2015-08-05 07:43:58

标签: ios swift uisearchbar uisearchcontroller uisearchbardelegate

我的搜索栏工作正常,为我的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上绘制而在我的导航中没有其他地方?

非常感谢。

1 个答案:

答案 0 :(得分:0)

我发现了一些工作, 在我的准备论文中,我说:

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

那就是它,在destinationViewController中我编写了下面的代码,以识别它返回到原始的ViewController并重绘条形。

override func viewWillDisappear(animated: Bool) {
    ....
    resultSearchController.searchBar.hidden = false
}