0

我一定在这里遗漏了一些东西。我已经创建了一个又一个计数器,它们都可以工作,但是在下面的代码中,计数器i始终保持为零。计数正确显示 18。其mapDelays想法是它将数组值i与真或假进行比较。这是从另一种绘制机场阵列(18 个机场)的引脚的方法调用的。数组中的一项是真或假的“延迟”。所以当我绘制机场时,我想看看是否有一个继电器“真​​”,如果有,把针变成红色而不是绿色。是的,我是一个新手,所以任何指针都会有所帮助 - 具体来说,我显然缺少流程和逻辑!

- (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 循环中,ireturn view;将停止你的 for 循环。所以你有零。下次你应该小心你的编码风格。特别是对于{}

于 2012-11-18T14:27:52.407 回答
1

由于 if/else 的两个分支都从该方法返回,因此 for 循环只会执行一次(即 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 回答