我有3个带标签栏控制器的标签。选项卡栏中的所有3个视图控制器都有导航控制器,可以自行转到其他视图控制器。
标签栏中的一个视图控制器带有地图和地图注释(地图视图控制器)。这些注释来自基于应用启动时当前位置的Web服务。在地图视图控制器中,顶部有一个导航栏项(搜索按钮),使您可以在地图中搜索不同的位置。单击搜索按钮后,搜索视图控制器将被推送到导航堆栈。搜索完成并找到新位置后,新位置将显示在同一搜索视图控制器的表视图中。
我的目标是在单击表视图项后自动返回到地图视图,并根据新搜索的位置在地图上加载新的注释数据。再次显示地图视图后,应用首次启动时检索到的旧数据应替换为从网络获取的新数据。标签栏中的所有3个视图控制器通过单个对象共享注释数据。
我的问题是,当用户点击搜索视图控制器中 didSelectRowAtIndexPath 方法中的项目时,如何使用新数据返回地图视图?返回标签栏中的地图视图以及从Web服务再次加载数据的最佳方法是什么?
我是否在搜索视图控制器中使用“ popViewControllerAnimated ”,然后在地图视图控制器“ viewWillAppear ”方法中工作?如何从搜索视图控制器将新位置的纬度和经度值传递给地图视图控制器?我是否将地图视图控制器导入搜索视图控制器并为地图视图控制器设置纬度和经度的ivar,即使“搜索视图控制器”是由“地图视图控制器”推动而产生的?将地图视图控制器导入搜索视图控制器的复杂性是什么,因为地图视图控制器已经在内存中了?
我想要完成的工作类似于免费应用程序'Wikihood'在搜索地图时所做的事情。
非常感谢。
答案 0 :(得分:0)
您似乎可以使用单件对象作为数据模型。这样,viewWillAppear:
只显示当前在数据模型中设置的任何位置,并且您的搜索控制器可以方便地放置其结果。
我想到的其他选项可能是委托或通知,但由于您已拥有模型对象,因此继续使用它是一致的。