【问题标题】:displaysSearchBarInNavigationBar deprecated in iOS8在 iOS8 中不推荐使用 displaySearchBarInNavigationBar
【发布时间】:2015-06-03 07:50:13
【问题描述】:

我正在尝试为 iOs8 寻找 displaySearchBarInNavigationBar 的替代品,有什么我可以使用的(快速)吗?

我试过self.navigationItem.titleView = resultSearchController.searchBar,但它什么也没做。

我不明白如何找到已弃用的功能的替代品,在苹果文档中它只是说已弃用,没有其他选择,如果您有任何提示,将不胜感激。

【问题讨论】:

标签: ios swift ios8 uisearchbardisplaycontrol


【解决方案1】:

您可以将UISearchBar 放入UINavigationBar 而不使用UINavigationController 没有问题,但您只需做一个小改动,首先您需要在您的内部定义@IBOutletUINavigationItem UINavigationBar 但它的名称需要与所有UIViewController 类中定义的navigationItem 属性不同,请参见以下代码:

class ViewController: UIViewController, UISearchControllerDelegate, UISearchResultsUpdating, UISearchBarDelegate {

    var searchController : UISearchController!

    @IBOutlet weak var navigationItemBar: UINavigationItem!

    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.navigationItemBar.titleView = searchController.searchBar

       self.definesPresentationContext = true        
    }

    func updateSearchResultsForSearchController(searchController: UISearchController) {

    }

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

然后你可以在你的模拟器中看到类似这样的东西:

希望对你有所帮助。

【讨论】:

  • 我在 iOS 10 上尝试了这个,但最后我的导航项中有一个搜索栏,它没有成为第一响应者。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-13
  • 1970-01-01
相关资源
最近更新 更多