我有一个小问题,说明我对 Obj C 缺乏了解。
我制作了一个带有根菜单和连接到另一个视图(地图)的按钮的小应用程序。我的问题是加载时在地图中设置默认位置。在我的 MapViewController.m 代码中,我包含了该函数:
- (void)viewWillAppear:(BOOL)animated {
CLLocationCoordinate2D zoomLocation;
zoomLocation.longitude= desired_longitude;
zoomLocation.latitude = desired_latitude;
MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, 4*METERS_PER_MILE, 4*METERS_PER_MILE);
[self.mapOutlet setRegion:viewRegion animated:YES];}
现在,当我第一次运行应用程序并按下根菜单中的地图按钮时,地图位于大西洋某处的中心。但是,如果我导航回根菜单并再次按下地图按钮,地图就会在所需位置居中!我尝试将此代码也放入 viewDidLoad 方法中,结果相同。
有人可以解释我如何解决这个问题,更重要的是,它是如何工作的?出现新视图时会调用哪些方法?例如,我觉得很奇怪,只有在实现文件中包含上述方法,这个方法在我没有调用的情况下执行(目前只是在第二次导航到地图视图之后,但仍然如此)......