【问题标题】:SearchBar not showing up in NavigationBar in Swift 4 IOS 11Swift 4 IOS 11 的导航栏中未显示搜索栏
【发布时间】:2018-05-10 07:10:51
【问题描述】:

我一直在尝试通过 UISearchController 在我的应用程序中添加搜索栏。它没有显示在我的导航栏上。我添加了一个导航控制器作为根视图控制器,除了它的色调之外没有改变任何东西。我尝试了一些解决方案,但没有任何效果。我正在使用带有 Xcode 9 的 Swift 4.0 并在 IOS 11 上运行该应用程序。下面是我的代码。提前致谢。

if #available(iOS 11.0, *) {
        let sc = UISearchController(searchResultsController: nil)
        sc.delegate = self
        let scb = sc.searchBar
        scb.sizeToFit()

        scb.heightAnchor.constraint(equalToConstant: 44.0).isActive = true
        scb.tintColor = UIColor.white


        self.navigationController?.navigationItem.searchController = sc
        self.navigationController?.navigationItem.hidesSearchBarWhenScrolling = false

    }

【问题讨论】:

  • 您找到解决方案了吗? @waleed
  • @PratyushPratik 没有人,仍然没有找到解决方案。我所做的是向导航控制器添加了一个搜索栏,并相应地使用它的委托方法来满足我的需要。

标签: ios11 swift4 xcode9


【解决方案1】:

我不知道为什么,但它会帮助你。

直接在 NavigationItem 中添加搜索控制器。

navigationItem.searchController = sc
navigationItem.hidesSearchBarWhenScrolling = false

【讨论】:

    【解决方案2】:

    将搜索栏设置为您的表格视图标题,对我有用。

    self.tableView.tableHeaderView = self.searchController.searchBar
    

    【讨论】:

      【解决方案3】:

      也许删除sc.delegate = self 并替换为scb.delegate = self。 另外,我认为您必须在scb.sizeToFit()scb.heightAnchor.constraint(equalToConstant: 44.0).isActive = true 之间仅选择一个,因为其中一个排除了另一个。希望对您有所帮助。

      【讨论】: