如何在天气应用程序中创建搜索栏?

Posted

技术标签:

【中文标题】如何在天气应用程序中创建搜索栏?【英文标题】:how to create a searchbar like in the weather app? 【发布时间】:2011-05-20 06:55:22 【问题描述】:

在我的应用程序中,当您添加新城市时,我希望在天气应用程序中具有类似的搜索栏。 我还想使用谷歌地理编码搜索城市/地点并解析我已经知道如何做到完美的结果。 为此,我实际上有两个问题。

首先,如何创建一个看起来像天气应用程序或斯托克斯应用程序中的搜索栏?普通的搜索栏没有我可以使用的主题。他们是怎么做到的?

其次,我怎样才能成为那种即时/实时搜索的感觉? 我的意思是,当您开始输入时,它会开始搜索您输入的内容,就像您输入的每个字母一样,它会进行新的搜索并在您停止输入后不久显示数据。 我无法对输入的每个字母进行查询,这会导致过多的流量并且我猜会花费很长时间。

【问题讨论】:

【参考方案1】:

创建基于窗口的项目,放置一个视图,放置一个 UISearchBar,在搜索栏顶部放置一个视图,使其成为矩形,然后您就有了一个带有主题的搜索栏。然后,您必须实现 UISearchBarDelegate 协议,因此对于每次编辑,您都可以在先前预加载(或直接从互联网)的字典中查找城市名称,如果有任何匹配项,则执行表格插入。您可以尝试匹配确切的名称,或使用levenshtein 距离。

您可能只想要延迟后的实时结果

[NSObject cancelPreviousPerformRequestsWithTarget:self];
[self performSelector:@selector(fillMyTableWithResults) withObject:nil afterDelay:1.0];

在委托的 textDidChange 方法中。

【讨论】:

猜你是指搜索栏顶部的标签吧?猜想我必须以编程方式执行此操作,因为 IB 不允许我在搜索栏顶部放置标签。 sry 我是 iphone 开发的新手!我肯定想通过谷歌地理编码加载数据所以我的问题是我想我不能对每个更改的字母进行查询? 如果你添加一个 UIView,它可以让你添加一个 UILabel 或一个 UIImageView 而无需任何编程, UISearchBar 作为一个子节点(将它移到它下面直到它成为一个子节点),标签作为一个UIView 的子级。换句话说,标签不是子栏或栏的一部分,即使它看起来如此。使用我在上面发布的代码,您可以选择延迟、1.0 或其他任何值,以便仅在用户停止写入时搜索。【参考方案2】:

你看过UISearchDisplayController。看看这个example。

编辑 您可以考虑缓存以前的结果,但如果不发送请求,您最终可能会显示陈旧的数据。虽然我还没有真正尝试过,但我认为Three20 框架是根据网络作为数据源的想法构建的。它还有一个等效的TTSearchDisplayController。你可以看看有没有帮助。

【讨论】:

是的,谢谢。该示例帮助我实现了我的搜索栏,但并没有真正帮助我解决两个问题:( 编辑我的答案,因为我之前的答案觉得无关紧要。虽然不完全在那里,但我希望它可以帮助您找到正确的方向。

以上是关于如何在天气应用程序中创建搜索栏?的主要内容,如果未能解决你的问题,请参考以下文章

从带有搜索栏的表格单元格创建模式视图时,无法在导航栏中创建后退按钮

如何在导航栏中创建返回按钮

如何在 QMainWindow 中创建菜单栏

在android中创建持久搜索栏

如何在android的操作栏中创建按钮[重复]

如何在 React Native 中创建自定义顶部导航栏