0

私はiphone開発の初心者であり、注釈のint値を決定しようとしています。これにより、そのint値を取得し、配列と相互参照して、対応する値を取得できます。ただし、.tagメソッドを使用してint値を取得しようとすると、値は常にゼロとして返されます。5つの注釈がある場合、どの注釈が0、1、2、3、および4であるかを判別できる必要があります。どんな助けでも大歓迎です。

マイコード

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view{

if (view.selected==YES) {
    NSInteger annotationIndex = view.tag; //Always returns zero
    NSLog(@"annotationIndex: %i", annotationIndex);
  }
} 

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
// Define your reuse identifier.
  static NSString *identifier = @"MapPoint";   

  if ([annotation isKindOfClass:[MapPoint class]]) {
    MKPinAnnotationView *annotationView = (MKPinAnnotationView *) [self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
    if (annotationView == nil) {
        annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
    } else {
        annotationView.annotation = annotation;
    }
    annotationView.enabled = YES;
    annotationView.canShowCallout = YES;
    annotationView.animatesDrop = YES;

    UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    NSInteger clickIndex = rightButton.tag; //Always returns zero, despite there being 5 annotations
    NSLog(@"buttonIndex: %i", clickIndex); 
    [rightButton addTarget:self
                    action:@selector(showDetails:)
          forControlEvents:UIControlEventTouchUpInside];
    annotationView.rightCalloutAccessoryView = rightButton;

    return annotationView;
  }
  return nil;    
}
4

2 に答える 2

1

タグプロパティは、設定する必要があるものです。どこにも設定していないと思います。

確かに、buttonWithTypeを使用して作成するUIButtonの場合。デフォルトのタグ値は0であるため、ビュー(ボタン)が作成された直後にタグを要求する0を常に取得します。

于 2013-02-28T22:58:59.427 に答える
0

インデックス値を取得するには、以下のコードを記述してください

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
  // Annotation is your custom class that holds information about the annotation
  if ([view.annotation isKindOfClass:[Annotation class]]) {
    Annotation *annot = view.annotation;
    NSInteger index = [self.arrayOfAnnotations indexOfObject:annot];
  }
}

私の以前の投稿でhttps://stackoverflow.com/a/34742122/3840428

于 2016-03-15T09:21:07.997 に答える