loadView 方法中的 MKMapView

Posted

技术标签:

【中文标题】loadView 方法中的 MKMapView【英文标题】:MKMapView in loadView method 【发布时间】:2010-12-14 05:42:54 【问题描述】:

我有一个愚蠢的问题要问,问题是我一直在使用 MapKit 框架,发现每当我在 init 方法中设置 MKMapView 对象的框架和 mapType 时,我都会得到一个空白视图,但是当我在loadView方法中设置frame和mapType可以查看地图界面。

为什么会这样?我正在使用 SDK 3.1

请帮忙

这是我的代码

-(无效)加载视图 [超级负载视图]; mymapView = [[MKMapView alloc]initWithFrame:self.view.bounds]; mymapView.mapType = MKMapTypeStandard; mymapView.showsUserLocation = 是; [self.view addSubview:mymapView];

【问题讨论】:

地图视图是从 xib 加载的吗?您是在 loadView 中实例化地图视图,还是访问在界面生成器中设置的地图视图出口? 不,我使用的代码没有 IB 我粘贴的上述代码没有任何错误,但问题是为什么它在 loadView 为什么不在 init 中 【参考方案1】:

使用调试指针检查init方法调用与否。我认为init方法不调用

但 viewDidLoad 总是调用这就是为什么会发生这种情况。

你也可以根据你的使用,即在init中显示地图,只需在viewDidLoad中调用init即可。

【讨论】:

viewDidLoad 方法总是被调用,因为当我们想在视图加载到窗口后对视图进行一些操作时,然后我们使用 viewDidLoad。现在确实调用了init方法,但是b4当我使用标签和按钮时,我曾经在init方法中为这些对象提供框架并且它们工作正常。对于地图视图,如果我在 init 方法中给出框架,我剩下的只是一个空白 UIView,仅此而已,我想知道为什么会发生这种情况

以上是关于loadView 方法中的 MKMapView的主要内容,如果未能解决你的问题,请参考以下文章

如何在“loadView”之外创建的按钮方法中更改“self.view”

为啥loadview中的self.view.tag和其他的不一样

loadView的使用总结

viewDidLoad和loadView之间的区别?

loadView与viewDidLoad

loadView的原理