iPhone - MKMapView 实例的问题

Posted

技术标签:

【中文标题】iPhone - MKMapView 实例的问题【英文标题】:iPhone - Problem with MKMapView instance 【发布时间】:2010-01-13 20:41:38 【问题描述】:

我遇到了 MKMapView 的问题,它作为全尺寸视图放置在 UITabBarController 的第一个位置。在显示视图之前,我向 mapView 添加了几个注释。一切正常。

当我更改选项卡(因此 mapView 不在视图中)并切换回带有 mapView 的选项卡时,所有注释都消失了,看起来 mapView 已重置为默认设置。

调试后我发现,当我切换回带有 mapView 的选项卡时,对 mapView 对象的引用指向与以前完全不同的地址。我假设离开选项卡后 mapView 已被释放,但我完全不知道为什么?

提前感谢您的回复!

您好, 塞巴斯蒂安

【问题讨论】:

【参考方案1】:

您将地图注释初始化代码放在哪里?在 -viewDidUnload 中,您可能将 mapView 设置为 nil,不是吗?如果是这样,请确保在 -viewDidLoad 中再次初始化视图时,您正在(重新)添加注释。

如果您有代码,那也会有所帮助。

【讨论】:

注解的坐标是由 NSURLRequest 加载的。当请求准备好时,会发布 NSNotification,并且注释由 mapView 控制器中的方法处理并添加到地图中。但是在 -viewDidLoad 我没有重新加载它们,也许这就是错误。 你在哪里创建和执行 NSURLRequest?您应该在 -viewDidLoad 中重新加载。 AFAIK,当它离开屏幕时,视图(大部分时间)设置为 nil(这就是为什么当你更改标签时会发生这种情况)【参考方案2】:

因为它使用了太多内存,所以它正在被释放。 您应该在模型中保留有关视图的所有信息(注释、地图区域) 这样你就可以在 viewDidLoad 中预设它了。

【讨论】:

是否有可能没有调用 -viewDidUnload ?因为我在那里设置了一个断点,但从未到达过。 那么也许你正在实例化视图两次..检查你在哪里创建控制器【参考方案3】:

我将注释的加载添加到 -viewDidLoad 并认为它现在可以正常工作。感谢您的帮助!

【讨论】:

以上是关于iPhone - MKMapView 实例的问题的主要内容,如果未能解决你的问题,请参考以下文章

iPhone MKMapView 注解聚类

userLocation 上的中心 MKMapView(最初) - 仅适用于 iPhone 4?

iPhone 编程:使用 MKMapView 的奇怪错误

在 iPhone MKMapView 中显示用户位置蓝点

标注在 MKMapView - iPhone 的引脚后面弹出

带光环的 iPhone MKMapView 引脚