在iOS 8中的导航栏中显示搜索栏

时间:2015-05-13 23:27:23

标签: ios8 uisearchbar uisearchdisplaycontroller

UISearchDisplayController有一个名为boolean的{​​{1}}属性。 iOS 8中的等价物是什么让我的搜索栏向上移动?非常感谢任何指导。

这是我的代码,我不完全确定为什么这不起作用。当我单击搜索栏时,它会消失,而不是移动自身和导航栏。

displaysSearchBarInNavigationBar

1 个答案:

答案 0 :(得分:85)

根据Apple的说法:

  在iOS 8中不推荐使用

UISearchDisplayController。(请注意,UISearchDisplayDelegate也已弃用。)要管理搜索栏的显示并在iOS 8及更高版本中显示搜索结果,请使用{{3 }}。

     

UISearchController类定义了一个界面,用于管理与搜索结果控制器内容一致的搜索栏的显示。搜索结果控制器是UISearchController属性指定的UIViewController对象,用于管理搜索结果。

现在,您可以使用UISearchController以下列方式在导航栏中显示搜索栏:

class ViewController: UIViewController, UISearchControllerDelegate, UISearchResultsUpdating, UISearchBarDelegate {

    var searchController : UISearchController!

    override func viewDidLoad() {
       super.viewDidLoad()

       self.searchController = UISearchController(searchResultsController:  nil)

       self.searchController.searchResultsUpdater = self
       self.searchController.delegate = self
       self.searchController.searchBar.delegate = self

       self.searchController.hidesNavigationBarDuringPresentation = false
       self.searchController.dimsBackgroundDuringPresentation = true

       self.navigationItem.titleView = searchController.searchBar

       self.definesPresentationContext = true        
    }

    func updateSearchResults(for searchController: UISearchController) {

    }

    override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
       // Dispose of any resources that can be recreated.
    }
}

但你必须考虑在这个故事板中设置一个UINavigationController

enter image description here

您可以轻松选择ViewController并执行以下步骤:

enter image description here

然后,当您在搜索栏中点击以下图片时,您应该会在设备中看到:

enter image description here

我希望这可以帮到你