MkMapView显示蓝屏

时间:2012-07-19 18:08:11

标签: ios mkmapview

我能够在MapView上成功向用户显示他们当前的位置。然而,当我去另一个视图控制器并回到我的mapview时,我看到一个蓝屏。为什么呢?

这是我的代码:

- (void)viewWillAppear:(BOOL)animated {

    MyManager * myManager = [MyManager sharedInstance];

    //if coming back from another screen, lets load the coordinates
    if (myManager.centerOfMap) {
        NSLog(@"myManager.centerOfMap has a value:");
        self.centerOfMap = myManager.centerOfMap;
    } 


    CLLocationCoordinate2D zoomLocation;    
    zoomLocation = *(self.centerOfMap);

    MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, 0.5*METERS_PER_MILE, 0.5*METERS_PER_MILE);
    MKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion];                
    [_mapView setRegion:adjustedRegion animated:YES];      
}

3 个答案:

答案 0 :(得分:7)

蓝屏通常是你指向非洲海岸(0,0)的标志。尝试打印出centerOfMap的坐标

答案 1 :(得分:0)

在你回来的时候,MKMapView是分配还是在调试器中显示为nil?

不确定?当您返回到视图控制器时,在代码中继续并设置断点,然后在控制台中键入" po _mapView"。看看结果。

如果它是零,你可能需要Alloc / Init它。可能会发生的事情是ARC会自动清空MKMapView以节省内存。

只是一个问题,您是否正在使用[yourMainViewController presentViewController:newViewController animated:YES]以模式方式呈现新的视图控制器?

答案 2 :(得分:0)

这一位引发了警钟:

CLLocationCoordinate2D zoomLocation;
zoomLocation = *(self.centerOfMap); 

这可能与

相对应
@property (nonatomic, assign) CLLocationCoordinate2D * centerOfMap;

这意味着它很可能现在指向堆栈的随机位,此后已被覆盖。高阶字很可能在0和0x4000000之间(0到10亿 - 大多数整数和存储器地址都在此范围内),这意味着你最终得到(大约)0和2之间的双倍。 / p>

摆脱*