0

ここで何かが欠けているに違いありません。カウンターごとにカウンターを作成しましたが、それらはすべて機能しますが、このコードの下のカウンターiは常にゼロのままです。カウントは正しく 18 を示しています。これは、配列の値をtrue または falsemapDelaysと比較するという考え方です。iこれは、空港配列 (18 空港) からピンをプロットする別のメソッドから呼び出されます。配列内の項目の 1 つは、true または false の「遅延」です。そのため、空港をプロットするときに、「真」のリレーがあるかどうかを確認し、ある場合はピンを緑ではなく赤にします。はい、私は初心者なので、ポインタがあれば役立ちます-具体的には、フローとロジックが明らかに欠けています!

- (MKAnnotationView*)mapView:(MKMapView *)mapView viewForAnnotation:
(id<MKAnnotation>)annotation
{
    if ([annotation isKindOfClass:[AirportDetails class]]) {
        static NSString *const kPinIdentifier = @"AirportDetails";
        MKPinAnnotationView *view = (MKPinAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:kPinIdentifier];

        if (!view) {
            view = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:kPinIdentifier];
            view.canShowCallout = YES;
            view.calloutOffset = CGPointMake(-5, 5);
            view.animatesDrop = NO;
        }
        NSLog(@"I am here");
        for (int i = 0; i < self.mapDelays.count; i++) {
            NSLog(@"DelaysCount %i",i);
            NSLog(@" %i",self.mapDelays.count);
            if ([self.mapDelays[i] isEqualToString:@"true"]) {
                view.pinColor = MKPinAnnotationColorRed;
                view.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
                return view;
            } else
                view.pinColor = MKPinAnnotationColorGreen;
            view.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
            //}
            return view;
        }
    } 

    return nil;
}
4

3 に答える 3

1

コード形式を変更した後、最初の for ループで for ループが停止するiことがわかりました。return view;だからあなたはゼロを持っています。次回は、コーディング スタイルに注意する必要があります。特に{}

于 2012-11-18T14:27:52.407 に答える
1

if/else の両方の分岐がメソッドから返されるため、for ループは 1 回だけ実行されます (つまり、i == 0 の場合)。

于 2012-11-18T14:28:43.870 に答える
0

NSLog ステートメントの %i 指定子については知りません。 フォーマット指定子

NSLog(@"DelaysCount %i",i);
NSLog(@" %i",self.mapDelays.count);

だからそんなはずはない

NSLog(@"DelaysCount %d",i);
NSLog(@" %d",self.mapDelays.count);
于 2012-11-18T14:27:38.653 に答える