2012-02-16 7 views
1

mapViewに注釈を表示できないため、いくつかの助けが必要です。 私はこの機能で注釈を更新しようとしている:MKMapView addAnnotationがMapViewにありません

- (void)addAnnotationsInMap:(NSMutableDictionary *)dico 
{ 
    NSLog(@"Agences Dictionary dico4324 : %@", dico); 
    if ([dico count] > 0) 
    { 
     NSLog(@"Count : %d", [dico count]); 
     for(int i = 0; i < [dico count]; i++) 
     { 
      CGFloat latDelta = [[[dico objectForKey:[NSString stringWithFormat:@"%d", i]] objectForKey:@"latitude"] floatValue]; 
      CGFloat longDelta = [[[dico objectForKey:[NSString stringWithFormat:@"%d", i]] objectForKey:@"longitude"] floatValue];  
      CLLocationCoordinate2D newCoord = 
      { 
       (latDelta), 
       (longDelta) 
      };  
      MapPointAnnotations *mp = [[MapPointAnnotations alloc] 
             initWithCoordinate:newCoord 
                title:[[dico objectForKey:[NSString stringWithFormat:@"%d", i]] objectForKey:@"name"] 
               subTitle:[[dico objectForKey:[NSString stringWithFormat:@"%d", i]] objectForKey:@"street"]]; 
      [agenceMapView addAnnotation:mp];  
     } 
    } 
} 

私は[self addAnnotationsInMap:Dico]と同じクラス(LocalizeViewController)の私の関数を呼び出す場合は、注釈がのMapView(agenceMapView)です。

他のクラス(RightSideBarViewController)から関数を呼び出す必要がありますが、RightSideBarViewControllerクラスを呼び出すと注釈がmapViewに表示されません。私は(クラスRightSideBarViewController)関数を呼び出すaddAnnotationsInMap

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *identifier = @"LocaliserTop"; 
    UIStoryboard *storyboard; 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
    { 
     storyboard = [UIStoryboard storyboardWithName:@"iPhone" bundle:nil]; 
    } else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
     storyboard = [UIStoryboard storyboardWithName:@"iPad" bundle:nil]; 
    } 
    LocalizeViewController *localizeViewController = (LocalizeViewController *)[storyboard instantiateViewControllerWithIdentifier:identifier];  
    [self.slidingViewController anchorTopViewOffScreenTo:ECLeft animations:nil onComplete:^{ 
     CGRect frame = self.slidingViewController.topViewController.view.frame; 
     self.slidingViewController.topViewController = localizeViewController; 
     self.slidingViewController.topViewController.view.frame = frame; 
     [self.slidingViewController resetTopView]; 
    }]; 
    [localizeViewController addAnnotationsInMap:agencesDictionary]; 
} 

あなたはいくつかのアイデアを持っていますか?

答えて

1

agenceMapViewはまだnilあるので、あなたは右

LocalizeViewController *localizeViewController = (LocalizeViewController *)[storyboard instantiateViewControllerWithIdentifier:identifier]; 

[localizeViewController addAnnotationsInMap:agencesDictionary]; 

を呼び出すべきではありません。ですから、基本的にこれを修正するには

[nil addAnnotation:mp]; 

を行っている、あなたは(いくつかの時間がかかる)nibファイルからlocalizeViewControllerがロードされるまで待つ必要があります。

たとえば、あなたは

localizeViewController.annotations = agencesDictionary; 

代わりの

[self addAnnotationsInMap:annotations]; 
のviewDidLoad

で次に

[localizeViewController addAnnotationsInMap:agencesDictionary]; 

置くことができます

関連する問題