没有从函数调用mapView setRegion

问题描述

| 我的头文件
@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\");
}
动画制作完成后,我将其称为第二个函数。 第二个功能不会更改地图的区域,但会打印到日志。因此正在调用函数。 我在这里做错了什么?     

解决方法

        不知道这是否是您的问题的根源,但绝对似乎是,或者可能是在促成... 您的viewDidLoad中的这一行不好:
self.view = mapView;
我建议使用addSubview将地图视图添加为self.view的子视图(docs) 我不知道做你做过的事会对你有什么影响……但是我有一种感觉,那就是他们不好。 如果您需要使根视图成为MKMapView,我相信这应该在loadView方法中完成,如此处所述。