我发现一些帖子显示了如何根据其状态更改 UIButton 的图像或图像背景。但是他们都没有提到这UIButton
是在 MKAnnotationView 的标注气泡内的情况。这是我正在尝试做的事情:
我的地图上有很多 MKAnnotationViews,我希望用户能够将其中一些设置为收藏夹。而且我认为如果这个选项可以UIButton
作为我的leftCalloutAccessoryView
.
- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
// Here I've created the button...
// Now I set the states:
[self.button setImage:self.image_1 forState:UIControlStateNormal];
[self.button setImage:self.image_2 forState:UIControlStateHighlighted];
[self.button setImage:self.image_3 forState:UIControlStateSelected];
annotationView.leftCalloutAccessoryView = self.button;
}
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
self.button.selected = YES;
}
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
if ([self annotationIsFavorite:view.annotation])
{
[self.button setImage:self.image_3 forState:UIControlStateNormal];
}
}
我尝试了不同的方法。UIButton
为气泡内部设置此特定状态是否有任何限制?因为UIControlStateHighlighted
工作正常。我不得不把那个代码放在didSelectAnnotationView:
'因为如果注释已经是最喜欢的,UIButton
应该出现在它的选定状态。我究竟做错了什么?