在我的viewForAnnotation
代表中,我创建了一个MKAnnotationView
,leftCalloutaccessory
作为信息按钮。点击信息按钮后,我想用UIActivityIndicator
替换它。所以在calloutAccessoryTapped
代表中,我写道
view.leftCalloutaccessoryView = [UIActivityIndicator indicatorWithStyle:UIActivityIndicatorWhite];
标注附件似乎有所改变,但似乎视图没有立即更新。
当标注配件被隐藏(通过敲击另一个针脚)并重新打开时,我看到一个微调器。但除此之外,我没有。
我尝试过调用[view setNeedsdisplay]
和[view setNeedsLayout]
以及[view layoutsubviews]
但是徒劳无功。
有任何建议/指示吗?
答案 0 :(得分:0)
我会考虑删除并重新添加注释。这看起来有点沉重,但可能有用。
答案 1 :(得分:0)
我遇到了类似的问题 - 如果有一个与注释关联的图片,我需要为leftCalloutAccessoryView显示图像。尝试在mapView:didSelectAnnotationView中设置它,而不是在mapView:viewForAnnotation
中设置它-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)annotView
{
...
if(imgURL.length>1){
// set a thread that will load the image
// but don't set the leftCalloutAccessoryView until the image is loaded
dispatch_queue_t downloader = dispatch_queue_create("annotation image downloader",NULL);
dispatch_async(downloader, ^{
NSURL* photoURL = [NSURL URLWithString:imgURL];
NSData* photoData = [NSData dataWithContentsOfURL:photoURL];
UIImage* photoImage = [UIImage imageWithData:photoData];
dispatch_async(dispatch_get_main_queue(), ^{
annotView.leftCalloutAccessoryView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 32, 32)];
[(UIImageView *) annotView.leftCalloutAccessoryView setImage:photoImage];
});
});
}
}