如何使用Swift将搜索栏移动到导航栏中?

5

我想知道如何将我的应用程序中的搜索栏(目前显示在导航栏下方)移动到导航栏中。

目前,我有一个名为makeSearchBar()的函数,在viewDidLoad()中调用该函数以创建搜索栏。没有故事板或xib文件。我想要删除导航栏上的标题并将其替换为搜索栏。但是,当我使用其他用户问题中提供的方法时,搜索栏要么消失了,要么保持原位置不变。

enter image description here

以下是搜索栏的代码:

override func viewDidLoad() {
        super.viewDidLoad()
        makeSearchBar()
}

func makeSearchBar() {
        searchBar = UISearchBar()
        searchBar.delegate = self
        searchBar.frame = CGRect(x: 0, y: 0, width: screenSize.width, height: 60)

       // searchBar.sizeToFit()

       //TRYING TO ADD TO NAV BAR
       navigationItem.titleView = searchBar

        searchBar.placeholder = "Search"

        view.addSubview(searchBar)
}

我也想知道如何使电池信息所在的顶部行具有不同的背景颜色。

如果您有任何建议,我将非常乐意听取。我是iOS新手,不太清楚自己在做什么。

2个回答

5
只需尝试这个方法:
override func viewDidLoad() {
        super.viewDidLoad()
        makeSearchBar()
}

func makeSearchBar() {
   searchBar = UISearchBar()
    searchBar.sizeToFit()
    navigationItem.titleView = searchBar
}

希望它能帮助你。

1
在viewDidLoad()中调用presentSearchController来尝试这段代码。
fileprivate func presentSearchController(initialSearchText searchText:String? = nil){
        let searchController = UISearchController(searchResultsController: nil)
        searchController.searchResultsUpdater = self
        searchController.obscuresBackgroundDuringPresentation = false
        searchController.searchBar.text = searchText
        if #available(iOS 11.0, *){
            self.navigationItem.searchController = searchController
            searchController.isActive = true
        }
        else{
            present(searchController, animated: true, completion: nil)
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接