2012-11-18 2 views
0

여기에 뭔가 빠져 있어야합니다. 나는 카운터를 만든 후 카운터를 만들었지 만 모두 작동하지만 카운터 아래의 코드에서 항상 i은 항상 0으로 유지됩니다. mapDelays은 정확하게 18을 나타냅니다.이 아이디어는 i의 배열 값을 true 또는 false와 비교합니다. 이것은 공항 배열 (18 개 공항)에서 핀을 그려주는 다른 방법에서 호출됩니다. 배열의 항목 중 하나는 true 또는 false 중 하나 인 '지연'입니다. 공항을 계획 할 때 '나는'릴레이가 있는지 확인하고 싶으면 핀이 녹색이 ​​아닌 빨간색이되게하십시오. 그래, 나는 어떤 포인터도 도움이 될 수 있도록 초보자이다 - 구체적으로, 흐름과 논리는 분명히 빠져있다!카운터가 0에 유지

- (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; 
} 

답변

1

을해야합니다. 그래서 당신은 0을가집니다. 다음 번에는 코딩 스타일에주의해야합니다. 특히 {}

+0

원래 외부로 돌아 오는보기가 있었으며 이것이 영향을 미쳤는지 테스트하기 위해 그곳에 놓았습니까? 나는 여전히 같은 결과를 얻는다. – ZDigitalPro

+0

코드를주의 깊게 확인하고 질문을 업데이트하십시오. 그래서 우리가 당신을 더 도울 수 있습니다. – sunkehappy

+0

네, {}을 잘못 배치하고, 그것을 바꿔서 모든 작업을 세고 계산합니다. 그것을 잡아 주셔서 너무 고마워요. 가끔은 뭔가 너무 많이 본다. – ZDigitalPro

0

NSLog 문에 % i 지정자가 없습니다. i의 루프의 처음에 당신이 루프에 대한 귀하의 중지됩니다 return view;이있는 것을 내가 발견 코드 형식을 변경 한 후

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

Format Specifiers 그래서하지 그

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

맞습니다. % d이 (가)되었습니다. – ZDigitalPro

1

if/else의 두 분기가 모두 메소드에서 반환되므로 for 루프는 한 번만 실행됩니다 (즉 i == 0).

+0

루프를 올바르게 작성하려면 어떻게 코딩해야합니까? – ZDigitalPro

+0

프로그램 로직을 보지 않고 말하기는 어렵지만, 호출하는 메소드는 각 공항에 대한 뷰를 원하기 때문에 for 루프를 사용해야하는 것입니다. 그러면 호출자는 공항과 일치하는 'i'값을 전달한 메소드의 논리에 전달합니다. (어쩌면 ... 나는 불완전한 정보를 기반으로 추측하고있다!) –

+0

좋아, 나는 그것을 시도 할 것이다. 나는 네가하는 말을 이해한다. 응답 시간을내어 주셔서 감사합니다, 나는 그것을 감사드립니다! – ZDigitalPro