Нажмите другое представление, когда щелкните правой кнопкой мыши по CallCalloutAccessoryView - PullRequest
0 голосов
/ 06 января 2012

Когда я нажимаю правую выноску на PIN-коде, я хочу перейти к новому контроллеру представления с именем DetailsThemes, однако, когда я делаю это:

-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
    [self.navigationController pushViewController:self.detailsThemes animated:YES];
}

Я получил эту ошибку:

Property detailsThemes not found on object of type 'ViewController *'; 
    did you mean to access ivar 'detailsThemes'?

Хотя detailsThemes является экземпляром DetailsThemes, который является классом UIViewController, в моем классе я также вызывал класс DetailsThemes с @class DetailsThemes; в верхней части файла, напримерэто:

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>

@class DetailsThemes;

@interface ViewController : UIViewController<MKMapViewDelegate> 
{
    DetailsThemes * detailsThemes;
}

@property (weak, nonatomic) IBOutlet MKMapView *mapView;

@end

РЕДАКТИРОВАТЬ:

-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
    NSLog(@"calloutAccessoryControlTapped: %@",view.annotation);
    [self.navigationController pushViewController:self.detailsThemes animated:YES];


}
- (MKAnnotationView *)mapView:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>)annotation {


    static NSString *identifier = @"ManageAnnotations";   

    MKPinAnnotationView *annotationView = (MKPinAnnotationView *) [map dequeueReusableAnnotationViewWithIdentifier:identifier];
    if (annotationView == nil) {
        annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
    } else {
        annotationView.annotation = annotation;
    }

    annotationView.enabled = YES;
    [annotationView setAnimatesDrop:YES];
    annotationView.canShowCallout = YES;
    //annotationView.pinColor = ((ManageAnnotations *)annotation).pinColor;
    annotationView.rightCalloutAccessoryView=[UIButton buttonWithType:UIButtonTypeInfoLight];
    return annotationView;

}

1 Ответ

0 голосов
/ 06 января 2012

В вашем ViewDidLoad методе вы должны сначала выделить свой DetailsThemes, а затем использовать его при вызове. если вы все еще не добились успеха, пожалуйста, отправьте код вашего callOutAccessoryView

...