2012-07-19 165 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之間產生一個雙精度。

擺脫*