2013-03-19 9 views
0

Мы пытаемся реализовать MKMapView в приложении iOS. Я получил mapView с данными местоположениями и контактами. Когда я нажимаю на эти контакты, я получаю заголовок и субтитры. Теперь я хочу включить кнопку раскрытия подробностей в этом представлении, в которой отображаются заголовок и субтитры. Для этого я использовал приведенный ниже код [Кнопка раскрытия подробностей MKPinannotation - новый вид рассматривается внутри первого метода, но не показывает detailDisclosureButton.Не отображать DetailDisclosureButton внутри аннотированного представления

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { 
    MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"pinView"]; 
    if (!pinView) { 
     pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pinView"] autorelease]; 
     pinView.pinColor = MKPinAnnotationColorRed; 
     pinView.animatesDrop = YES; 
     pinView.canShowCallout = YES; 

     UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
     pinView.rightCalloutAccessoryView = rightButton; 
    } else { 
     pinView.annotation = annotation; 
    } 
    return pinView; 
} 


- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped 
{ 
} 

Теперь то, что я могу сделать? Кто-нибудь, пожалуйста, посмотрите и помочь мне ...

+0

Попробуйте этот MKPinAnnotationView * pinView объявить в файле .h и использовать –

ответ

1
-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation { 

    pinView = nil; 
    if(annotation != map.userLocation) 
    { 
     NSString *defaultPinID [email protected]"com.invasivecode.pin1"; 
     pinView = (MKPinAnnotationView *)[map dequeueReusableAnnotationViewWithIdentifier:defaultPinID]; 
     if (pinView == nil) pinView = [[[MKPinAnnotationView alloc] 
              initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease]; 
     UIButton *btnGo = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
     [btnGo addTarget:self action:@selector(goToLocation:) forControlEvents:UIControlEventTouchUpInside]; 
     pinView.rightCalloutAccessoryView=btnGo; 
     pinView.canShowCallout = YES; 
     pinView.animatesDrop = YES; 
     pinView.draggable=NO; 
    } 
    else { 
     [map.userLocation setTitle:@"I am here"]; 
    } 
    return pinView; 
} 

Объявите это в .h файл

MKPinAnnotationView *pinView 
+0

Большое спасибо Manohar..It работал :) :) :) – iOSiOS

+0

: Привет Manohar, теперь у меня есть другая проблема. Когда карта загружается во второй раз, она не отображает контакты. Пожалуйста, помогите мне найти решение. Я разместил вопрос с кодом в приведенной ниже ссылке. http://stackoverflow.com/questions/16297158/annotated-pins-are-not-getting-loaded-during-reloading-of-map?noredirect=1#comment23330064_16297158 – iOSiOS

0

пожалуйста, попробуйте установить рамки для RightButton т.е.

rightButton.frame = CGRectMAke (x,y,width,height); 
+0

Не нужно устанавливать Frame дорогой –

+0

, как можно добавить что-либо без рамки. – Kasaname

+0

pinView.rightCalloutAccessoryView это автоматически принимает вид ... Нет необходимости устанавливать кадр –

 Смежные вопросы

  • Нет связанных вопросов^_^