Одно простое решение - сделать в аннотациях переменные ann1
, ann2
и ann3
ivars вместо локальных переменных в viewDidLoad
.
После этого вы сможете легко получить к ним доступ и изменить координаты карты в методе changeSegment:
:
if (control.selectedSegmentIndex == 0) {
//set streetLabel, phoneLabel, and hoursLabelX here also
[mapView setRegion:MKCoordinateRegionMakeWithDistance(ann1.coordinate, 1000, 1000) animated:YES];
}
else
if (control.selectedSegmentIndex == 1) {
//set streetLabel, phoneLabel, and hoursLabelX here also
[mapView setRegion:MKCoordinateRegionMakeWithDistance(ann2.coordinate, 1000, 1000) animated:YES];
}
else
if (control.selectedSegmentIndex == 2) {
//set streetLabel, phoneLabel, and hoursLabelX here also
[mapView setRegion:MKCoordinateRegionMakeWithDistance(ann3.coordinate, 1000, 1000) animated:YES];
}
Кстати, вы можете значительно упростить и сократить код в changeSegment:
, объединив все утверждения, которые относятся к одному и тому же условию, как указано в комментариях выше, а не по отдельности.