我有一个包含3个视图的应用。我正在使用标签栏控制器来选择视图。
我目前将地图设置为缩放到包含所有注释的最近位置。但是,当我在视图中更新核心数据时,然后选择选项卡2但注释引脚保持不变。即使我退出应用程序,引脚颜色也相同(它根据数据状态改变颜色)。我可以让它更新的唯一方法是放大,然后退出。
我试过的代码:
[mapView release];
和
[mapView setNeedsDisplay];
和
[mapView removeAnnotation:tempAnnotation];
[mapView addAnnotation:tempAnnotation];
和
CLLocationCoordinate2D center = [mapView centerCoordinate];
[mapView setCenterCoordinate:center];
我甚至将地图集fly设置为坐标2次,一旦放大远,然后再次设置为“正常”缩放级别。
有没有办法在didFinishLoading
等上刷新视图?
我可以将其中一个代码片段放在错误的位置吗?
我也在发布传递的数据等
只是标签栏缓存页面?有没有办法强制地图刷新?
谢谢! (我有点像菜鸟,如果你能提供帮助,请明确帮助我理解的步骤)
罗伯特
答案 0 :(得分:0)
我也将用这个回答我自己的问题:
我看过关于如何重置视图,重绘图层等的帖子。我对语言缺乏经验(相当(不是新的)),所以我所做的就是黑客攻击,但它有效。我希望你能使用它,但是找到更好的解决方案。
查看控制器:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
mapView.region = MKCoordinateRegionMakeWithDistance([mapView centerCoordinate],2587600.0, 2587600.0);
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
mapView.region = MKCoordinateRegionMakeWithDistance([mapView centerCoordinate],5.0, 5.0);
}
因此,当视图离开时,以及...视图,然后地图缩放到很远。当视图返回到视图时,数据被重新加载并且瞧。您的里程可能会有所不同,但这种方法可以完美地满足我的需求。
它根本不是一种刺耳的效果。它是无缝的。从UI的角度来看,没有任何变化。
喝彩! 罗伯特