gpt4 book ai didi

objective-c - 未调用 mkmapview 委托(delegate)方法 -calloutaccessorycontroltapped

转载 作者:行者123 更新时间:2023-11-29 11:10:48 24 4
gpt4 key购买 nike

我正在尝试完成 cs193p ( link ) 作业 5 的最后一部分

该应用程序从 Flickr 中选择热门地点,并将这些地点的照片绘制在 map 上。

任务 5c 说

Each annotation on the map should have a callout which displays the following: c. A disclosure button which brings up the full image of the chosen photo (exactly as if the user had chosen the photo from a table) or which brings up a list of photos in that place (again, exactly as if the user had chosen that place from a table).

我已经完成了前面显示标注的部分,并将缩略图加载到标注中。

我已经将我的 mapViewController 设置为 mapView 的委托(delegate),并且我知道它正在工作,因为当我单击图钉时,它会调用 didSelectAnnotationView 方法,该方法也在我的 mapViewController 中并且一切正常,并且实际上在标注中显示披露附件。

但是,我还定义了 calloutAccessoryControlTapped 方法(同一 VC),但该方法未被调用。完全没有。目前我那里只有一个 NSLog,但什么也没有出现。

好吧,我什么也没说,只是为了让它更奇怪,有一个注解适用于数百个注解。

最开始的一个注解触发了按钮,但没有其他的。是因为它是第一个注释吗?按钮只是为此而触发吗?

我想发布代码,但不确定它的相关性:

 @interface flickrthingMapViewController ()<MKMapViewDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *mapview;

@end

@implementation flickrthingMapViewController
@synthesize delegate = _delegate;

@synthesize mapview = _mapview;
@synthesize annotations = _annotations;


- (void)viewDidLoad
{
[super viewDidLoad];
self.mapview.delegate = self; //remembered to set the delegate

}
-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)aView
{
if (![aView.annotation isKindOfClass:[flickrthingPlaceAnnotation class]])
{
UIImage *image = [self.delegate flickrthingMapViewContoller:self imageForAnnotation:aView.annotation];


[(UIImageView *)aView.leftCalloutAccessoryView setImage:image];
}
UIButton *buttonToViewDetails = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
aView.rightCalloutAccessoryView=buttonToViewDetails;


}

-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)aView calloutAccessoryControlTapped:(UIControl *)control
{

NSLog(@"hello");
}

我问过的所有其他问题都证明我做了一些愚蠢的事情,我希望这里也是如此。但是我已经坐着看着它很久了,却看不到它!

感谢您的见解!

最佳答案

事实证明,在 didSelectAnnotationView 中添加按钮为时已晚!

我以为我试图通过不创建按钮来提高效率,除非有人实际选择了注释,但事实证明(出于某种原因?)如果按钮是在 didSelectAnnotationView 中创建的,它不会触发委托(delegate)方法。

我已将它移到 viewForAnnotation 方法中并且它起作用了!

关于objective-c - 未调用 mkmapview 委托(delegate)方法 -calloutaccessorycontroltapped,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11657506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com