在iPhone中搜索栏查询

时间:2011-11-10 11:50:58

标签: iphone uisearchbar

我正在制作地图应用程序,我已经能够使用注释调用在地图上显示商店位置的网络服务。我的网络服务在澳大利亚拥有200多家商店。我正在选择一个UISearch栏,当我插入Syd .....然后悉尼,澳大利亚的地址自动填充tableview应该打开。我怎样才能实现这一点..我是否需要再次调用Web服务Url进行地址自动填充tablview或者我应该手动插入地址还是有任何方法???

编辑:= 在我的应用程序中,我正在寻找半径5,10,15公里范围内的商店位置。如果用户想要另一个位置而不是当前位置,那么他可以插入他的任何位置以查找插入位置周围的商店信息。因此,当用户插入他的位置时,自动填充地址表视图应该打开

2 个答案:

答案 0 :(得分:0)

我有同样的应用程序显示人员的地址所以我使用了一个webservice,它给了我所有的地址,我把它们保存在NSMutableArray中,然后我在UISearchBar的textDidChange函数中检查数组中的字符串,如果有任何匹配前缀的字符串然后我在UISearchBar中显示地址...但是在这种情况下如果你只写'S'那么它将返回多个记录所以你需要根据客户的要求决定如何显示,他是否想要列表或任何匹配的记录...如果预期列表,那么你需要显示tableview,当用户选择值时,只需隐藏tableview .....

答案 1 :(得分:0)

一种可能的解决方案是将预定义值保留在数据库(Core Data)中,然后在searchBar的textDidChange委托上,如果数据与当前serach关键字匹配,则可以查询数据库以搜索列表。这样产生的结果可以在具有一些动画效果的表格视图中显示,以给出自动建议的感觉。

在textDidChange上调用webservice将阻止用户界面,并且不是继续使用的好选择。虽然这个功能在网络上更为普遍,但在设备上我发现第一个选择比第二个更有效率。

编辑:在编辑部分问题中回答问题

  1. 你需要自动建议。
  2. 从服务器获取数据(使用网络服务)。
  3. 现在提供像“Syd”这样的地址建议功能,转入澳大利亚悉尼,我的上述答案将帮助您将这些静态地址放入数据库,然后为用户提供自动建议选项。对于第二部分,您可以在数据库中保存位置的纬度/经度,一旦用户完成其选择,您可以查询Web服务以获取数据。

    步骤可以概括为..

    • 用户类型Syd。
    • 您使用某些查询来查询数据库以搜索与Syd匹配的地点,例如地点LIKE%syd%。
    • 使用autosuggest填充表格,并显示地名 悉尼,澳大利亚。
    • 用户选择一个地方,相应地你选择Lat / long(取了 以及上面查询中的名称)并查询您的Web服务 获取
    • 的数据

    地点 = Sydny,澳大利亚(不是真的需要) 纬度 =悉尼的一些价值 经度 - 悉尼的一些价值 半径 = 5,10,15,具体取决于您的应用逻辑

    然后,服务器将获取特定纬度/长度的给定范围内的所有商店。

    可以在服务器端完成更多计算密集型工作,在客户端可以减少Web服务调用以避免延迟。