在 UIViewController 中,我将 MKMapView 添加到控制器控制的视图中。
- (void)viewDidLoad {
[super viewDidLoad];
CGRect rect = CGRectMake(0, 0, 460, 320);
map = [[MKMapView alloc] initWithFrame:rect];
map.delegate = self;
[self.view addSubview:map];
}
后来在控制器中我有
- (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView
{
NSLog(@"done.");
}
完成永远不会被打印出来。其他委托方法都不会像 mapView:viewForAnnotation: 我在另一个应用程序中使用 MKMapView 那样被调用,但这似乎发生在我制作的任何新应用程序上。还有其他人看到过这种行为吗?
EDIT:
问题似乎是当 UIViewController 成为 MKMapView 的委托时, NSObject 的直接子类似乎工作正常。我可以像这样解决问题,但自从我以前这样做过以来仍然显得很奇怪。
我遇到了完全相同的问题:我已将 分配给我的控制器,并将委托链接到 Interface Builder 中的“文件所有者”,但仍然没有调用我实现的委托方法。
原因是从 iOS 4 开始,地图被缓存,每当应用程序显示缓存的地图时,就不会调用“mapViewDidFinishLoadingMap”等方法。在模拟器中重置“内容和设置”会清除缓存的地图,从而解决问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)