gpt4 book ai didi

ios - 如何使用代码将 UISearchController Searchbar 放到导航栏上

转载 作者:搜寻专家 更新时间:2023-10-31 22:10:57 25 4
gpt4 key购买 nike

如果我将 ViewController 嵌入到导航栏中,navigationItem.titleView.resultSearchController?.searchBar 会将搜索栏放入导航栏中。但是,我用代码创建了一个 UISearchController 和一个 UINavigationBar。这一次,navBar 出现了,但 searchBar 没有出现。

resultSearchController = UISearchController(searchResultsController: locationSearchTable)
resultSearchController?.searchResultsUpdater = locationSearchTable

let searchBar = resultSearchController!.searchBar
searchBar.sizeToFit()
searchBar.delegate = self

let navBar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y:0, width: 375, height: 64))
self.view.addSubview(navBar)
//navBar.topItem = resultSearchController?.searchBar
self.navigationItem.titleView = resultSearchController?.searchBar

navBar.topItem = resultSearchController?.searchBar 不起作用,因为 topItem 是一个字符串值,而 resultSearchController?.searchBar 是一个 UIView 类型。我怎样才能达到同样的效果?

最佳答案

创建一个 UINavigationItem 实例并将其添加到创建的导航栏中。将搜索 Controller 搜索栏作为 titleView 添加到 UINavigationItem。

class SearchViewController: UIViewController, UISearchControllerDelegate, UISearchResultsUpdating, UISearchBarDelegate {

var searchController: UISearchController!

override func viewDidLoad() {
super.viewDidLoad()
self.addNavigationbar()
}

func addNavigationbar() {
let navBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 60))
self.view.addSubview(navBar)

let navigationItem = UINavigationItem(title: "")
self.searchController = searchControllerWith(searchResultsController: nil)
navigationItem.titleView = self.searchController.searchBar

navBar.setItems([navigationItem], animated: false)
self.definesPresentationContext = true
}

func searchControllerWith(searchResultsController: UIViewController?) -> UISearchController {

let searchController = UISearchController(searchResultsController: searchResultsController)
searchController.delegate = self
searchController.searchResultsUpdater = self
searchController.searchBar.delegate = self
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = true

return searchController
}

关于ios - 如何使用代码将 UISearchController Searchbar 放到导航栏上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45757002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com