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

时间:2011-05-20 06:55:22

标签: iphone objective-c uisearchbar

在我的应用中,我想在添加新城市时在天气应用中使用搜索栏。 我也想用谷歌地理编码搜索城市/地方,并解析我已经知道如何做到完美的结果。 实际上我有两个问题。

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

第二,我怎样才能成为即时/现场搜索的感觉? 我的意思是,当你开始输入时,它会开始搜索你输入的内容,对于你输入的每个字母都有类似的情况,它会进行新的搜索并在你停止输入后短时间内显示数据。 我不能对输入的每一个字母进行查询,这会导致过多的流量而且我猜的时间太长了。

2 个答案:

答案 0 :(得分:1)

创建基于窗口的项目,删除视图,删除UISearchBar,在搜索栏顶部放置视图,使其成为矩形,并且您有一个带主题的搜索栏。然后,您必须实现UISearchBarDelegate协议,以便在每次编辑时,在先前预加载的字典(或直接从Internet上)查找城市名称,并在有任何匹配时执行表插入。您可以尝试匹配确切的名称,或使用levenshtein距离。

可能你只想延迟一段时间后才能看到实时结果

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

在委托的textDidChange方法中。

答案 1 :(得分:0)

你看过UISearchDisplayController了吗?看一下这个example

修改 您可以考虑缓存以前的结果但不发送请求,最终可能会显示过时的数据。虽然我还没有尝试过,但我认为Three20框架是基于web作为数据源构建的。它也有一个等价的TTSearchDisplayController。你可以看看它是否有帮助。