0

カスタム注釈を含むマップビューを表示する機能を iPad アプリに実装しています。何らかの理由で、 - (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id ) アノテーション メソッドは、マップが読み込まれてから 1 ~ 2 秒後に呼び出されます。

問題は、ピンがロードされる前にマップビューから別のビューに移動すると、アプリがアクセス不良でクラッシュすることです。したがって、この 1 ~ 2 秒の遅延は存在しないはずです。

特別なことは何も起こっていません。表示するピンはわずか (3 つ) しかないので、パフォーマンスの問題にはなりません。

その解決策があれば教えてください。

コード:

マップビューコントローラー

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    [self setTitle:self.pageTitle];

    [self.navigationController.navigationBar setTintColor:[UIColor lloydsNavBarTintColour]];
    [self.mapView setDelegate:self];

    MKCoordinateRegion region = { {0.0, 0.0 }, { 0.0, 0.0 } };
    region.center.latitude = 53.566414;
    region.center.longitude = -0.922852;
    region.span.longitudeDelta = 10.0f;
    region.span.latitudeDelta = 10.0f;
    [self.mapView setRegion:region animated:YES];


    ACNEfficiencyAnnotation *annotation = [[ACNEfficiencyAnnotation alloc]init];

    [annotation setCoordinate:CLLocationCoordinate2DMake(55.5783462524414,-4.39453077316284)];

    [self.mapView addAnnotation:annotation];
}

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation
{
    self.annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pin"];

    return self.annotationView;
}

注釈の実装:

@interface ACNEfficiencyAnnotation : NSObject <MKAnnotation>
{

}

@property (nonatomic, assign) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;
@property (nonatomic, strong) ACNEfficiencyLocation *location;

@end


@implementation ACNEfficiencyAnnotation

@synthesize coordinate;
@synthesize title;
@synthesize subtitle;
@synthesize location;

@end
4

2 に答える 2

0

dequeueReusableAnnotationViewWithIdentifierviewController のプロパティを再利用するのではなく、デリゲート メソッドでアノテーションを準備するために使用する必要があります。

viewController のメモリ管理に問題があるはずです。View Controller が解放され、そのビューがアンロードされたときに、マップ ビューを解放して nil に設定していることを確認してください。

于 2012-05-31T15:51:14.153 に答える
0

プロパティを設定し、デリゲートが呼び出されるたびself.annotationViewに新しいプロパティを作成しています。MKAnnotationViewプロパティをインスタンス化し、デリゲート メソッドでviewDidLoad返すだけです。self.annotationView

于 2017-04-07T23:37:19.560 に答える