Вы пытаетесь использовать annoForMoreDetails, чтобы узнать, какую аннотацию нажал пользователь, чтобы вы могли показать больше деталей?Если это так, есть более простой способ.Используйте метод делегата calloutAccessoryControlTapped представления карты.Он будет вызываться, когда пользователь нажимает на вспомогательную кнопку, и он передает представление аннотации, которое включает аннотацию в качестве свойства.
Удалите переменную экземпляра annoForMoreDetails, а в viewForAnnotation удалите цикл for, который устанавливает annoForMoreDetails(Я думаю, что в конечном итоге каждый раз устанавливается последняя аннотация).Удалите все другие ссылки на annoForMoreDetails.
Также в viewForAnnotation удалите строку addTarget в rightButton, поскольку вы замените свой пользовательский метод moreDetails реализацией calloutAccessoryControlTapped:
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view
calloutAccessoryControlTapped:(UIControl *)control
{
Annotation *annoForMoreDetails = (Annotation *)view.annotation;
//the code currently in moreDetails method goes here...
}