2016-08-13 12 views
0

コンテキスト: 多くの異なるセルを含むTableViewを作成しています。その中に複数の注釈を含むMapViewを含める必要があります。iOS 9:UITableViewCell内の複数の注釈を含むMapView

私がこれまで持っているもの:

//address comes in this format: NSString = @"myStreet myNumber, myZIP myCity, Germany"; 

- (void) mapPinForAddress: (NSString *)address { 

    CLGeocoder *geoCoder = [[CLGeocoder alloc] init]; 

    [geoCoder geocodeAddressString:adresse completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) { 
      if (placemarks && placemarks.count > 0) { 

       CLPlacemark *topResult = [placemarks objectAtIndex:0]; 

       MKPlacemark *placeMark = [[MKPlacemark alloc] initWithPlacemark:topResult]; 

       MKPointAnnotation *adressPoint = [[MKPointAnnotation alloc] init]; 
       adressPoint.coordinate = placeMark.coordinate; 
       adressPoint.title [email protected]"Title"; 
       adressPoint.subtitle = address; 

       [mapPins addObject:adressPoint]; 
      } 
}]; 

cellForRowAtIndexPathの内部

は、私が最初のためTableViewControllerをロード:ここ

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
if (indexPath.section == mapViewSection) { 
    myMapCell *cell = [tableView dequeue...];   

    [cell.mapView addAnnotations:mapPins]; 
    [cell.mapView showAnnotations:mapPins animated:YES]; 

    return cell; 

} 

とは私の問題です時間...それは魅力のように機能します...しかし、私は前のビューに戻って、TableViewController tは動作しません。 私はすべてをNSLogにしようとしましたが、出力は同じですので、毎回mapPinForAddressが呼び出されます。

誰かにヒントやコードがありますか?

+1

あまりにも多く呼び出された場合、 'geocodeAddressString'は失敗する可能性があります。 – Brandon

答えて

1

本当に必要な場合を除き、uitableviewcellにマップビューを配置するのは悪い習慣です。最善の方法は、場所の静止画像を作成し、mapviewではなくuiimageviewを使用することです。ここからマップから静止画像を作成するAPI - >Click Here

関連する問題