Здесь вы можете использовать кучу различных приемов.
Например, вы могли бы держать Ивар для каждого annotationView и сделать это:
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
if (view == myFirstAnnotationView) {
//do something
}
if (view == mySecondAnnotationView) {
//do something
}
if (view == myThirdAnnotationView) {
//do something
}
}
Или, вы можете использовать значение тега представления аннотаций.
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
if ([view.tag [email protected]"one"]) {
}
if ([view.tag [email protected]"two"]) {
}
}
Или вы можете подклассифицировать MKAnnotationView, чтобы добавить к нему какое-то поведение.
- (void)mapView:(MKMapView *)mapView annotationView:(MyMKAnnotationViewSubclass *)view calloutAccessoryControlTapped:(UIControl *)control {
[view doAMethodIMadeWhenISubclassed];
}
Нет, один из них не является полным решением, и было бы трудно представить одно без Бетер понимания приложения и дизайна, но то, что все они имеют в общем меняется annotationView, прежде чем добавить его к карте чтобы решить, что делать после того, как происходит обратный вызов делегата. Надеюсь, это приведет вас к правильному пути.
Я понял, как перейти к подробному представлению, которое я создал, но мне было интересно, можете ли вы рассказать мне, как рассказать контакты отдельно, без каких-либо утверждений. Как я могу узнать, какая кнопка нажата ??? – alecnash
Спасибо, честно говоря, мне было проще использовать IBAction для кнопок. – alecnash