我正在尝试完成 cs193p 作业 5 的最后一部分(链接)
该应用程序从 Flickr 中选择热门地点,并将这些地点的照片绘制在地图上。
任务 5c 说
地图上的每个注释都应该有一个标注,显示以下内容: c. 一个显示按钮,显示所选照片的完整图像(就像用户从桌子上选择照片一样)或显示该位置的照片列表(再次,就像用户选择了那个地方从表中)。
我已经完成了前面显示标注的部分,并将缩略图加载到标注中。
我已经将我的 mapViewController 设置为 mapView 的委托,并且我知道它正在工作,因为当我单击图钉时,它会调用 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");
}
我问过的所有其他问题都证明我做了一些愚蠢的事情,我希望这里就是这种情况。但是我已经坐在那里看它很久了,看不到它!
感谢您的见解!