2012-01-06 3 views
0

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

-(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; на верхней части файла, как Тхи s:

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

@class DetailsThemes; 

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

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

@end 

EDIT:

-(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; 

} 
+0

Вы прочитали сообщение об ошибке? Прочтите дважды, у него есть объяснение. Вы должны объявить @property для получения подробной информации или доступа к ivar напрямую. –

+0

Я сделал, ладно, теперь у меня все работает отлично, однако, когда я нажимаю на нужную информационную кнопку ПИН-кода, я ничего не получил, просмотр деталей не взимается. – Malloc

+0

Является ли calloutAccessoryControlTapped фактически вызванным? Положите NSLog или точку останова в этом, чтобы быть уверенным. – Anna

ответ

0

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

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