1

请帮我解决这个障碍。我有一个带有大约 200 个注释的MKMapView 。当我点击其中一个时,一个详细视图被推送到 UINavigationController 中,因此 MKMapView 被隐藏。在浏览呈现的详细视图期间,我收到内存警告并且隐藏视图被卸载。在我关闭显示的详细视图后,再次加载带有 MKMapView的视图,但没有可见注释(除了用户位置蓝色气泡)并且焦点被重置为默认值。[mapView: viewForAnnotation:] 没有被调用。

即使我删除了 viewDidUnload 中的所有注释并在 viewDidLoad 中插入新的注释,MKMapView 也不会显示它们,即使 [mapView: viewForAnnotation:] 被每个单独的注释调用。

知道如何在卸载和加载后使其表现并保持相同的可见地图矩形吗?非常感谢。

编辑 - 已解决!问题是在 initWithNibName 中,我得到了

地图 = (MKMapView*)[self.view viewWithTag:TAG_MAP];

从那一刻起,我只使用“地图”变量。但是在重新加载之后,变量显然指向了一个无效的对象。所以我将上面的命令移到了 viewDidLoad,现在它可以工作了。感谢克雷格为我指明了好的方向!

4

1 回答 1

0

也许您在重新加载期间与 MKMapView 或其委托分离。您可以查看修复内存警告,或更改地图初始化代码以确保在 viewdidload 期间调用相同的内容作为初始加载。不过可能值得检查 viewDidLoad,我想我听说它在 iOS 6 中得到了不同的处理。

于 2012-09-19T19:16:14.610 回答