2012-07-19 112 views
1

我能够成功地向用户显示其在MapView上的当前位置。但是,当我转到另一个视图控制器并返回到我的地图视图时,我看到一个蓝色屏幕。为什么?MkMapView显示蓝色屏幕

这是我的代码:

- (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

这个蓝色屏幕实际上是大海。不要与Windows蓝色屏幕混淆,你想把你的电脑扔进大海。 – yinkou 2012-07-20 20:46:51

回答

7

蓝屏通常表示您指向非洲海岸外的(0,0)。尝试打印出来的centerOfMap

0

在你回来的一点,是的MKMapView分配或它显示在调试器零?

不确定?当您回到视图控制器时,在代码中继续并设置断点,然后在控制台中键入“po _mapView”。看看结果。如果它是零,你可能不得不Alloc/Init它。可能发生的事情是,ARC会自动清空MKMapView以节省内存。

只是一个问题,你是用模态方式使用[yourMainViewController presentViewController:newViewController animated:YES]来呈现新的视图控制器吗?

0

坐标此位设置警铃大作:

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

这大概相当于

@property (nonatomic, assign) CLLocationCoordinate2D * centerOfMap; 

这意味着它很有可能是它指向的随机位堆栈已被覆盖。高位字很可能在0到0x4000000之间(0和十亿 - 大多数整数和存储器地址将在此范围内),这意味着您最终会在(大约)0和2之间产生一个双精度。

摆脱*