こんにちは、画像に示すように、MKMapAnnotationView に次と前の機能を実装する必要があります。カスタム注釈を作成するための参照をここから取得しましたが、次と前のボタンをクリックして次または前の注釈を変更するにはどうすればよいですか。ヒントを提供してくださいまたはこれに関するアイデア。私はこの時点でスタックしています。
質問する
268 次
1 に答える
0
rightCalloutAccessoryView
そのために、とを使用できますleftCalloutAccessoryView
。
の使用例を次に示しますrightCalloutAccessoryView
。
-(MKAnnotationView*)mapView:(MKMapView *)mapView viewForAnnotation: (id<MKAnnotation>)annotation {
if ([annotation isKindOfClass: [MKUserLocation class]]) {
return nil;
}
static NSString* AnnotationIdentifier = @"AnnotationIdentifier";
MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier];
[pinView setCanShowCallout:YES];
if([annotation isKindOfClass:[ASPinAnnotation class]])
{
[pinView setPinColor:MKPinAnnotationColorRed];
}
else if([annotation isKindOfClass:[ASAddAutomatPin class]])
{
UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton setTitle:[annotation title] forState:UIControlStateNormal];
[pinView setRightCalloutAccessoryView:rightButton];
[pinView setPinColor:MKPinAnnotationColorPurple];
}
calloutAccessoryView がタップされたときに通知を受け取るには、デリゲートで次の関数を使用する必要があります。
-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
if([(UIButton*)control buttonType] == UIButtonTypeDetailDisclosure)
{
ASAddViewController *addController = [[ASAddViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:addController];
[addController setDelegate:self];
[self.controller presentViewController:navController animated:YES completion:nil];
}
}
于 2013-01-08T20:47:03.953 に答える