Ios 当我将MKAnnotationView发送到当前视图时,详图视图控制器应用程序崩溃

Ios 当我将MKAnnotationView发送到当前视图时,详图视图控制器应用程序崩溃,ios,iphone,objective-c,Ios,Iphone,Objective C,我想通过segue将注释信息发送到详细视图控制器,但当我点击应用程序崩溃并显示日志-[UINavigationController setAnnotation:]:未识别的选择器发送到实例0x1b367870' 我使用以下代码: - (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {

我想通过segue将注释信息发送到详细视图控制器,但当我点击应用程序崩溃并显示日志-[UINavigationController setAnnotation:]:未识别的选择器发送到实例0x1b367870' 我使用以下代码:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view   calloutAccessoryControlTapped:(UIControl *)control {
    [self performSegueWithIdentifier:@"presentDetailViewController" sender:view];
} 
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"presentDetailViewController"]) {
         MKAnnotationView *annotationView = sender;
         [[segue destinationViewController] setAnnotation:annotationView.annotation];
    }
} 
和局部视图控制器:

@interface ACDetailMapController : UIViewController

-(void)setAnnotation:(ACAnnotations *)annotation;
@end

-(void)setAnnotation:(ACAnnotations *)annotation {
    _name.text = annotation.name;
}

请告诉我哪里错了?

正如您在异常中看到的,您正在将
setAnnotation:
发送到UINavigationController的实例。因为使用
setAnnotation:
的唯一地方是这一行:

[[segue destinationViewController] setAnnotation:annotationView.annotation];
可以假设
[segue destinationViewController]
是UINavigationController的一个实例。很可能是因为您的segue提供了一个嵌入在UINavigationController中的ViewController

您可以使用UINavigationController的
viewControllers
数组访问真正的目标viewController:

UINavigationController *navigationController = [segue destinationViewController];
ACDetailMapController *viewController = navigationController.viewControllers[0];
[viewController setAnnotation:annotationView.annotation];

在detailview的viewDidLoad方法中添加一个断点,以检查是否实际加载了该视图。我的猜测是,您没有在情节提要中设置视图控制器的类,它调用的是通用UIViewController而不是自定义视图控制器。是的,您编写了正确的解决方案below@Matthias:我的代码也崩溃了,请尝试帮助-(void)mapView:(MKMapView*)mapView未选择AnnotationView:(MKAnnotationView*)视图{[MapView取消选择annotation:view.annotation动画:YES];[self-PerformsgueWithIdentifier:@“CallToProfile”发件人:view];}-(void)prepareForSegue:(UIStoryboardSegue*)segue发件人:(id)发件人{if([segue.identifier IsequalString:@“CallToProfile”]){MKAnnotationView*annotationView=发件人;[segue.destinationViewController setAnnotation:annotationView.annotation];}