2011-05-20 64 views
0

在我的应用程序中当我添加一个新城市时,我想要在天气应用程序中拥有一个搜索栏。 我也想搜索谷歌地理编码的城市/地方,并解析结果我已经knkow如何做到这一点完美的作品。 实际上我有两个问题。如何在天气应用程序中创建一个搜索栏?

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

第二我怎么能成为即时/实时搜索的感觉? 我的意思是,当你开始输入时,它会开始搜索你输入的内容,类似于你输入的每一个字母,它会在你停止输入的时候做一个新的搜索并在一段时间后显示数据。 我无法查询每一个输入的字母,这会造成太多的流量,我会猜测时间太长。

回答

1

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

也许你只想要一个延迟后现场结果,这样做

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

在委托的textDidChange方法。

+0

猜你的意思是在搜索栏右上方的标签?我猜想我必须这样做,因为IB不让我在搜索栏上放置一个标签。 sry我对iphone开发有点新鲜感!我一定要通过谷歌地理编码加载数据,所以我的问题是我想我不能做每个字母改变查询? – bllubbor 2011-05-20 08:19:00

+0

如果你添加一个UIView,UISearchBar作为一个子元素(在它下面移动它直到它变成一个子节点),并且该标签作为UIView的一个子元素,它可以让你在没有任何编程的情况下添加UILabel或者UIImageView。换句话说,即使看起来这样,标签也不是小孩或小节的一部分。通过我在上面发布的代码,您可以选择延迟,1.0或其他任何内容,以便只在用户停止书写时才进行搜索。 – Jano 2011-05-20 08:31:08

+0

谢谢你这个作品 – bllubbor 2011-05-20 13:31:25

0

你看过 UISearchDisplayController。看看这个 example

编辑 缓存以前的结果是什么,你可以考虑,但没有发送请求,你可以最终显示过期数据。虽然我没有真正尝试过,但我认为Three20框架是以web作为数据源的想法构建的。它也有一个相当于TTSearchDisplayController。你可以看看它是否有帮助。

+0

是的,我确实谢谢你。这个例子帮助我实现了我的搜索栏,但并没有真正帮助我解决我的两个问题:( – bllubbor 2011-05-20 08:22:12

+0

编辑我的答案,因为我以前的答案是不相关的,虽然不完全在那里,但我希望它能帮助你走向正确的方向。 – 2011-05-20 08:38:28

相关问题