导航栏中的 iOS 搜索栏

Posted

技术标签:

【中文标题】导航栏中的 iOS 搜索栏【英文标题】:iOS Search Bar in Navigation Bar 【发布时间】:2015-08-27 21:36:44 【问题描述】:

我目前正在开发一个以 MapView 作为主视图的应用程序。我想在导航栏中有一个搜索按钮,可以在同一导航栏中显示一个搜索栏。

如果你使用过 Twitter 应用程序,你就会知道我在说什么。

我已经看到了大量的指南和教程,它们展示了如何在表格视图中实现类似的东西,但这不是我想要做的。

谁能告诉我最好的方法是什么?

正如有人回答 非常 很快指出的那样 - 我的问题看起来与 this 问题非常相似。然而,这个问题似乎对我没有任何作用,也没有解决让搜索栏出现在按钮按下的问题。

现在我的搜索不需要SearchViewController,因为它所做的只是使用MKLocalSearch 来定位MapView

【问题讨论】:

【参考方案1】:

首先,您需要知道 Twitter 所做的是在点击搜索按钮时呈现一个新的UIViewController,但没有动画。在这个新的UIViewController 中,您可以将UISearchBar 放入代码中,就像您在问题中输入的答案一样,或者使用 Interface Builder,这取决于您。

在这里查看我的答案Displaying search bar in navigation bar in ios 8

如果您想做的是将UISearchBar 显示在搜索图标出现的同一UIViewController 中,您需要为UIBarButtonItem 处理@IBAction 并根据您的需要进行更改(使用动画,如果你想)。

我强烈推荐 Twitter 的方式,更干净。

希望对你有所帮助。

【讨论】:

【参考方案2】:

我要给你一个我自己尝试过的想法,它正在工作,但我现在无法为你提供代码

我相信你可以很容易地找到我要告诉你的代码。

首先你必须知道在导航控制器中标题在 UIView 中你可以访问所以你需要做的就是

创建一个 UIView 并在 navigationItem.titleView 中将您的视图分配给它,就像这样navigationItem.tittleView = the created view

这将创建一个搜索栏对象并将其添加为创建的视图作为子视图

view.addSubView(the search bar view object)

希望这就是你要找的……祝你好运

【讨论】:

以上是关于导航栏中的 iOS 搜索栏的主要内容,如果未能解决你的问题,请参考以下文章

iOS:在导航栏中显示搜索栏时隐藏范围栏

iOS 11 在导航栏中自定义搜索栏

ios11:导航栏中的 UISearchBar

iOS:从导航栏中删除以编程方式添加的搜索栏

导航栏中的标题太长

在 Swift 的导航栏中获取搜索栏