如何在 iOS 中搜索时显示建议?

Posted

技术标签:

【中文标题】如何在 iOS 中搜索时显示建议?【英文标题】:How to show suggestions while searching in iOS? 【发布时间】:2017-04-27 06:38:00 【问题描述】:

我正在使用 Swift 3。我基本上是使用 API 来搜索来自网络的图像。我想在输入任何单词时向我的 searchBar 添加建议。例如,当我搜索“Sa”时,我会收到“Sand”、“Samsung”、“Sail”等建议。关于如何实现这一点的任何建议?

执行查询后得到的输出是 JSON 格式。

I want my Search Bar to look something like this

【问题讨论】:

建议来自你的 api 吗? 不,我认为我的 API 没有任何建议。 或试试这个第三方库:github.com/gaurvw/MPGTextField 【参考方案1】:

有多种方法。

您可以使用键盘附件。显示了键盘上的视图(通常是自动完成的位置),您可以按照自己喜欢的方式使用它,例如添加三个按钮,这将触发正确建议的输入。苹果在这里提供了一个例子:https://developer.apple.com/library/content/samplecode/KeyboardAccessory/Introduction/Intro.html#//apple_ref/doc/uid/DTS40009462-Intro-DontLinkElementID_2

另一种方法是在当前视图上放置一个视图(很可能是表格视图),放置在输入字段的正下方,或者具有固定高度,例如3 个项目或直到键盘。对于这种方法,您可以查看本教程:https://www.raywenderlich.com/336/auto-complete-tutorial-for-ios-how-to-auto-complete-with-custom-values

【讨论】:

这些方法中的任何一种都会显示有结果的单词吗? @Nef10 是的。例如。对于第二个教程:您将要自动完成的所有单词列表放在 searchAutocompleteEntriesWithSubstring 方法中的 pastUrls 变量中。 我想创建一个我想要自动完成的所有单词的列表是不可能的,因为只有在我得到整个单词之后我才能执行查询。 对不起,但您的问题过于宽泛。您应该问一个问题,如何生成一个单词列表以自动完成单独的表格如何呈现它。【参考方案2】:

尝试像这样搜索我正在搜索具有名称的字典数组我在 UISearchBar 下方的 tableview 中显示所有结果搜索

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String)

    let namePredicate = NSPredicate(format: "name contains[c] %@", searchText)
    if HotelData.count > 0
    
        searchData = (HotelData as NSArray).filtered(using: namePredicate) as [AnyObject]
        tlbSearch.reloadData()
    

【讨论】:

我知道我必须创建一个数组,其中包含一些 SearchBar 可以检查的单词。但我试图得到的建议是与结果相关的单词。 @BalvanshHeerekar 您需要在键盘的关键字建议中显示它 @BalvanshHeerekar 如果您将 tableview 设置在搜索栏最初隐藏的位置下方,我会看到随附的屏幕截图,您可以根据需要显示 tableview 工作

以上是关于如何在 iOS 中搜索时显示建议?的主要内容,如果未能解决你的问题,请参考以下文章

在横向模式下键入时显示搜索建议

在 AutoSuggestBox 中导航建议时显示占位符

如何在导航栏下隐藏搜索栏并在用户下拉表格视图时显示它?

iOS 10:如何在应用程序处于后台时显示传入的 VOIP 呼叫通知?

iOS 4.2 如何在方向改变时显示不同的图像?

如何仅在第一次启动 IOS Swift 时显示页面控制器