状態に応じて UIButton の画像または imageBackground を変更する方法を示す投稿をいくつか見つけました。UIButton
しかし、これが MKAnnotationView の Callout バブル内にある場合については言及していません。これが私がやろうとしていることです:
マップに多くの MKAnnotationView があり、ユーザーがそれらのいくつかをお気に入りとして設定できるようにしたいと考えています。そして、このオプションが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
、選択された状態で表示されるはずなので、そのコードを配置する必要がありました。私は何を間違っていますか?