我能够在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];
}
答案 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>
摆脱*
。