快速搜索栏和导航栏将在启动

时间:2016-04-10 14:12:21

标签: ios swift tableview searchbar

在我的swift 2应用程序中,我有一个带有搜索栏的表格视图:

enter image description here

但是,如果点击搜索栏,我的导航栏和搜索栏将被隐藏。

enter image description here

这是我在viewDidLoad

中的代码
        self.resultSearchController = ({
            let controller = UISearchController(searchResultsController: nil)
            controller.searchResultsUpdater = self
            controller.dimsBackgroundDuringPresentation = false
            controller.searchBar.sizeToFit()
            controller.hidesNavigationBarDuringPresentation = true
            self.MyTable.tableHeaderView = controller.searchBar

            return controller
        })()

一开始我也收到这条消息:

  

尝试加载视图控制器的视图   不允许取消分配,可能导致未定义的行为   ()

我的问题是,我的错误在哪里? :/

2 个答案:

答案 0 :(得分:1)

来自this教程,您可以使用此代码来解决问题。

self.navigationController!.navigationBar.translucent = false
searchController!.hidesNavigationBarDuringPresentation = false

// This makes the view area include the nav bar even though it is opaque.
// Adjust the view placement down.
self.extendedLayoutIncludesOpaqueBars = true
self.edgesForExtendedLayout = UIRectEdge.Top

答案 1 :(得分:1)

如果您想让它完美运行,您必须使用以下代码修改代码:

        self.resultSearchController = UISearchController(searchResultsController: nil)
        self.resultSearchController.searchResultsUpdater = self
        self.resultSearchController.searchBar.delegate = self
        self.definesPresentationContext = true
        self.resultSearchController.dimsBackgroundDuringPresentation = false
        self.resultSearchController.hidesNavigationBarDuringPresentation = true
        if #available(iOS 11.0, *) {
            self.navigationItem.searchController = self.resultSearchController
        } else {
            self.tableView.tableHeaderView = self.resultSearchController.searchBar
        }