2

我有 3 个带有标签栏控制器的标签。标签栏中的所有 3 个视图控制器都有导航控制器,可以自行转到其他视图控制器。

标签栏中的视图控制器之一是带有地图和地图注释(地图视图控制器)。这些注释来自基于应用程序启动时的当前位置的 Web 服务。在地图视图控制器中,顶部有一个导航栏项(搜索按钮),使您可以在地图上搜索不同的位置。单击搜索按钮后,搜索视图控制器将被推送到导航堆栈。搜索完成并找到新位置后,新位置将显示在同一搜索视图控制器的表视图中。

我的目标是在单击表格视图项后自动返回地图视图,并根据新搜索的位置在地图上加载新的注释数据。再次显示地图视图后,应用程序首次启动时检索的旧数据应替换为从 Web 获取的新数据。标签栏中的所有 3 个视图控制器通过单例对象共享注释数据。

我的问题是,当用户单击搜索视图控制器中的didSelectRowAtIndexPath方法中的项目时,我应该怎么做才能使用新数据返回地图视图?返回选项卡栏中的地图视图并从 Web 服务再次加载数据的最佳方法是什么?

我是否在搜索视图控制器中使用“ popViewControllerAnimated ”,然后在地图视图控制器“ viewWillAppear ”方法中工作?如何将新位置的纬度和经度值从搜索视图控制器传递给地图视图控制器?我是否将地图视图控制器导入到搜索视图控制器中,并将地图视图控制器的 ivar 设置为纬度和经度,即使“搜索视图控制器”是由“地图视图控制器”推动而产生的?由于地图视图控制器已经在内存中,将地图视图控制器导入搜索视图控制器有什么复杂性?

我想要完成的事情类似于免费应用程序“Wikihood”在搜索地图时所做的事情。

非常感谢。

4

1 回答 1

0

看来您可以使用单例对象作为数据模型。这样,viewWillAppear:只显示当前在数据模型中设置的任何位置,并且您的搜索控制器有一个方便的位置来放置其结果。

想到的其他选项是委托或通知,但由于您已经拥有模型对象,因此继续使用它是一致的。

于 2012-04-06T22:05:08.607 回答