我的标题文件:
@interface MapViewController : UIViewController <MKMapViewDelegate, NSFetchedResultsControllerDelegate>
{
MKMapView *mapView;
NSFetchedResultsController *fetchedResultsController;
NSManagedObjectContext *managedObjectContext;
}
@property (nonatomic, retain) MKMapView *mapView;
@property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
我正在我的.m文件中合成。
在我的viewDidLoad函数中我有这个(视图通过父控制器中的动画淡入):
- (void)viewDidLoad
{
[super viewDidLoad];
mapView = [[MKMapView alloc] initWithFrame:self.view.frame];
mapView.mapType = MKMapTypeSatellite;
mapView.delegate = self;
self.view = mapView;
[self.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
self.view.alpha = 0.0;
MKCoordinateRegion region;
MKCoordinateSpan span;
region.center.latitude = 42.764705;
region.center.longitude = -94.047375;
span.latitudeDelta=.02;
span.longitudeDelta=.02;
region.span = span;
[mapView setRegion:region animated:YES];
NSLog(@"Change this1");
}
这很有效。
我有另一个功能:
- (void)setInitialMapView
{
MKCoordinateRegion region;
MKCoordinateSpan span;
region.center.latitude = 32.764705;
region.center.longitude = -84.047375;
span.latitudeDelta=50.0;
span.longitudeDelta=50.0;
region.span = span;
[mapView setRegion:region animated:YES];
NSLog(@"Change this 2");
}
动画完成后我调用第二个函数。
第二个函数不会更改地图的区域,但会打印到日志中。所以函数被调用。
我在这里做错了什么?
答案 0 :(得分:0)
不确定这是否是您问题的根源,但它看起来确实如此,或者可能有所贡献......
viewDidLoad中的这一行不好:
self.view = mapView;
我建议使用addSubview(docs)将地图视图添加为self.view的子视图
我不知道做你所做的事情的后果会是什么......但我觉得他们不会好。
如果您需要将根视图设为MKMapView,我相信这应该在loadView方法as documented here中完成。