iOS8 中弃用了 displaysSearchBarInNavigationBar
displaysSearchBarInNavigationBar deprecated in iOS8
我正在尝试为 iOs8 寻找 displaySearchBarInNavigationBar 的替代品,有什么我可以使用的(在 swift 中)吗?
我尝试了 self.navigationItem.titleView = resultSearchController.searchBar
但它没有任何作用。
我不明白如何找到已弃用函数的替代品,在 apple 文档上只说已弃用,别无选择,如果您有任何提示,将不胜感激。
您可以将 UISearchBar
放在 UINavigationBar
中而不使用 UINavigationController
没有问题,但是您只需要做一个小改动,首先您需要定义一个 @IBOutlet
到 UINavigationBar
中的 UINavigationItem
但它的名称需要与所有 UIViewController
class 中定义的 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.
}
}
然后你可以在你的模拟器中看到这样的东西:
希望对你有所帮助。
我正在尝试为 iOs8 寻找 displaySearchBarInNavigationBar 的替代品,有什么我可以使用的(在 swift 中)吗?
我尝试了 self.navigationItem.titleView = resultSearchController.searchBar
但它没有任何作用。
我不明白如何找到已弃用函数的替代品,在 apple 文档上只说已弃用,别无选择,如果您有任何提示,将不胜感激。
您可以将 UISearchBar
放在 UINavigationBar
中而不使用 UINavigationController
没有问题,但是您只需要做一个小改动,首先您需要定义一个 @IBOutlet
到 UINavigationBar
中的 UINavigationItem
但它的名称需要与所有 UIViewController
class 中定义的 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.
}
}
然后你可以在你的模拟器中看到这样的东西:
希望对你有所帮助。