3 つのタブを持つ tabbarcontroller を読み込むアプリがあります。それらの1つはマップビューです。次のコードによって、ユーザーの位置にズームインするように設定されています。
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
_mapView.showsUserLocation = YES;
CLLocationCoordinate2D zoomLocation;
//IF no city was selected, use userLocation as center
if (!self.cityWasSelected) {
zoomLocation.latitude = self.userLocation.coordinate.latitude;
zoomLocation.longitude = self.userLocation.coordinate.longitude;
CLLocationDistance visibleDistance = 5000; // 5 kilometers
MKCoordinateRegion adjustedRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, visibleDistance, visibleDistance);
[_mapView setRegion:adjustedRegion animated:YES];
} else { //if a city was selected, use that city's value...this is actually the same right now, since self.userLocation is set appropriately elsewhere.
//Set location from selection - forward geocode
zoomLocation.latitude = self.userLocation.coordinate.latitude;
zoomLocation.longitude = self.userLocation.coordinate.longitude;
CLLocationDistance visibleDistance = 5000; // 5 kilometers
MKCoordinateRegion adjustedRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, visibleDistance, visibleDistance);
[_mapView setRegion:adjustedRegion animated:YES];
}
}
最初のタブはユーザー設定用のテーブル ビュー コントローラーで、2 番目のタブはマップ ビュー、3 番目のタブはテーブル ビューです。マップビューを最初にタップすると、マップに全世界が表示されます:) タップして最初のタブまたはリストタブに戻ってからマップビューに戻ると、マップは現在の場所を中心に適切に配置されます。
なぜこれが起こるのですか?