向 UINavigationBar 添加搜索按钮:Swift

Posted

技术标签:

【中文标题】向 UINavigationBar 添加搜索按钮:Swift【英文标题】:Adding Search Button to UINavigationBar : Swift 【发布时间】:2015-12-04 05:17:18 【问题描述】:

我有一个 ViewController1 和 ViewController2。 ViewController1 设置了 NavigationController。我在 NavigationBar 上有一个按钮(自定义搜索图标)。现在我按下 control+click 并拖动到 ViewController2 并将其设置为 Show。当我按下它时,它不起作用。我还尝试将按钮拖到 ViewController1 并将其设置为 IBAction,但这也不起作用。

我想要完成的事情: 我想在导航栏的左侧创建一个按钮。单击它时,我想添加搜索栏并允许用户从数组中搜索。这样做的最佳方法是什么?搜索栏也有取消按钮,如果按下,用户应该返回到他之前的 ViewController。我不希望任何人为我工作,但如果你能指出正确的方向,那就太棒了。

【问题讨论】:

“自定义搜索图标”是指 UIBarButtonItem 吗?当您尝试连接到 ViewController1 中的 IBAction 时,它以什么方式不起作用? 【参考方案1】:

我假设“自定义搜索图标”是指导航栏中的UIBarButtonItem。如果是这种情况,您应该能够使用您描述的技术转入控制器,因此您可以尝试输入新的 UIBarButtonItem 并重试。

但对于您所描述的问题,我可能会推荐使用 UISearchController 的稍微不同的方法。由于听起来您正在使用情节提要,因此将搜索栏和搜索显示控制器从对象库拖到导航栏下方的控制器中。

查看 UISearchController 文档: [https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UISearchController/]

这是来自 Apple 的示例项目: [https://developer.apple.com/library/ios/samplecode/TableSearch_UISearchController/Introduction/Intro.html]

祝你好运!

【讨论】:

我尝试打开示例项目链接,但它显示“找不到页面” 它在 URL 中包含了括号,现在它可以工作了。 知道了,谢谢。我的问题是我使用的是 ImageView 而不是 Button。我将按照苹果指南创建搜索栏选项,而不是从头开始工作。非常感谢。【参考方案2】:

首先从界面生成器中删除所有连接。清除与按钮关联的代码。 创建一个 IBAction 并放置一个断点以查看它是否在您单击按钮时被调用。 如果它确实被调用,那么将一个新的 ViewController 推到它上面,(ViewController2)。 在 ViewController 2 上添加您的搜索栏。

【讨论】:

我发现了我的主要错误,我使用的是 ImageView 而不是按钮。我在创建搜索机制的正确道路上吗?如何在导航栏中放置搜索栏?

以上是关于向 UINavigationBar 添加搜索按钮:Swift的主要内容,如果未能解决你的问题,请参考以下文章

如何向 UINavigationBar 添加按钮

如何在 UINavigationBar 上添加 UISearchBar 动画

UINavigationBar 在中断从左边缘手势向右滑动后显示返回按钮,如何隐藏它以及为啥显示它?

将按钮添加到 UINavigationBar 的子类

尝试添加 UInavigationBar 按钮时发生崩溃

使用完成按钮以编程方式添加 UINavigationBar