在iOS8中,显示搜索栏在导航栏中已经被弃用。

6

我正在尝试寻找iOs8中displaysSearchBarInNavigationBar的替代方法,是否有任何可以使用的内容(用swift)?

我尝试过self.navigationItem.titleView = resultSearchController.searchBar,但它没有任何作用。

我不明白如何找到被弃用函数的替代方法,在苹果文档中只是简单地标记为“弃用”,没有提供替代方案,如果您有任何提示,将不胜感激。


尝试使用UISearchBar:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISearchBar_Class/index.html#//apple_ref/c/tdef/UISearchBarStyle - Horatio
我已经尝试过了,我认为没有什么可以替代在导航栏中显示搜索栏。 - Kalianey
@KaliAney 我在这个链接 https://dev59.com/0V0a5IYBdhLWcg3whJDW#30227166 发布了一个关于它的答案。 - Victor Sigler
谢谢你的回答@VictorSigler,唯一的问题是我没有使用navigationController,并且不能在那里使用它,因为它会影响我的代码的其他部分,有其他方法可以不使用它吗? - Kalianey
@KaliAney 请看我的回答。 - Victor Sigler
1个回答

8

您可以在不使用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.
    }
}

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

enter image description here

希望这可以帮助您。


我在iOS 10上尝试了这个,但最终我的导航项中的搜索栏没有成为第一响应者。 - plaetzchen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接