我正在尝试寻找iOs8中displaysSearchBarInNavigationBar的替代方法,是否有任何可以使用的内容(用swift)?
我尝试过self.navigationItem.titleView = resultSearchController.searchBar
,但它没有任何作用。
我不明白如何找到被弃用函数的替代方法,在苹果文档中只是简单地标记为“弃用”,没有提供替代方案,如果您有任何提示,将不胜感激。
我正在尝试寻找iOs8中displaysSearchBarInNavigationBar的替代方法,是否有任何可以使用的内容(用swift)?
我尝试过self.navigationItem.titleView = resultSearchController.searchBar
,但它没有任何作用。
我不明白如何找到被弃用函数的替代方法,在苹果文档中只是简单地标记为“弃用”,没有提供替代方案,如果您有任何提示,将不胜感激。
您可以在不使用UINavigationController
的情况下将UISearchBar
放入UINavigationBar
中,但只需进行一些小的更改即可。首先,您需要定义一个@IBOutlet
,指向UINavigationBar
内部的UINavigationItem
,但它的名称必须与所有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.
}
}
然后您可以在模拟器中看到类似于这样的东西:
希望这可以帮助您。