Domanda

Ok ragazzi, quindi ho un guarda la mappa con annotazioni e se battuto, mostrano didascalie con un'icona informativa sulla destra. Se battuto, questa funzione viene chiamata:

- (void)showDetails:(id)sender
{
    NSLog(@"showDetails: called!");
    NSLog(@"sender: %@",sender);
    PermitDetailViewController *permitDetail = [[PermitDetailViewController alloc] initWithStyle:UITableViewStyleGrouped];
    NSLog(@"permitDetail.title: %@",permitDetail.title);
    permitDetail.title = sender.title; //compiler doesn't like this!
    NSLog(@"permitDetail.title: %@",permitDetail.title);
    [self.navigationController pushViewController:permitDetail animated:YES];
    [permitDetail release];
}

Tutto bene finora, ma ho bisogno di sapere che cosa il titolo del richiamo è stato. Io sto cercando di fare sender.title, ma che non sta lavorando per bene ... Tutte le idee?

Questa è l'uscita della console quando cambio la linea problematico permitDetail.title = self.title;:

2010-12-02 11:50:06.044 Parking[55413:207] showDetails: called!
2010-12-02 11:50:06.045 Parking[55413:207] sender: <UIButton: 0x8139890; frame = (104 8; 29 31); opaque = NO; autoresize = LM; layer = <CALayer: 0x8139920>>
2010-12-02 11:50:06.045 Parking[55413:207] permitDetail.title: (null)
2010-12-02 11:50:06.045 Parking[55413:207] permitDetail.title: All Permits
È stato utile?

Soluzione

Il mittente nel tuo caso è il pulsante di richiamo (non il MKAnnotation) in modo che non ha la proprietà titolo.

In viewForAnnotation, rimuovere l'addTarget sul pulsante divulgazione. Basta impostare rightCalloutAccessoryView della vista annotazione per essere il pulsante.

Quindi implementare il metodo delegato calloutAccessoryControlTapped che sarà chiamata quando il callout è sfruttato. Essa fornisce anche un riferimento alla vista annotazione nella chiamata. La vista annotazione contiene un riferimento alla nota:

- (void)mapView:(MKMapView *)mapView 
        annotationView:(MKAnnotationView *)view 
        calloutAccessoryControlTapped:(UIControl *)control
{
    NSLog(@"callout annotation.title = %@", view.annotation.title);

    //do your show details thing here...
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top