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

时间:2018-01-04 22:43:15

标签: ios swift uisearchbar navigationbar navigationcontroller

所以我想知道如何在我的应用程序中移动搜索栏(当前显示在导航栏下方的导航栏中。

现在,我有一个名为makeSearchBar()的函数,我在viewDidLoad()中调用它来创建搜索栏。没有storyboard或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 个答案:

答案 0 :(得分:3)

只需尝试一下:

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

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

希望它会对你有所帮助。

答案 1 :(得分: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)
        }
    }