0

私のアプリケーションでは、コンテナ(分割ビュー)のようなView Controllerを統合しました。コントローラ ビュー コントローラ コンテナ 2 ビュー。詳細ビューと選択ビュー (テーブル ビュー)。

ここに画像の説明を入力

テーブル セルを選択しているときに、MKMap ビューで MKAnnotation を読み込む必要があります。正常にセルをタップしている間は正常に動作しています。選択テーブル ビューからセルを同時に選択すると (セルをランダムに高速に選択すると)、アプリケーションがクラッシュします。クラッシュは、この Annotation コードのみが原因であると確信しています。これが私のコードです。

注釈のクラス:

@interface AddressAnnotation : NSObject<MKAnnotation> {
    CLLocationCoordinate2D coordinate;
}
-(id)initWithCoordinate:(CLLocationCoordinate2D) c;
@end


@implementation AddressAnnotation
@synthesize coordinate;

- (NSString *)subtitle{
    return nil;
}

- (NSString *)title{
    return nil;
}

-(id)initWithCoordinate:(CLLocationCoordinate2D) c{
    coordinate=c;
    return self;
}

@終わり

詳細ビューに注釈を追加するコード:

detail.h
      AddressAnnotation *addAnnotation;
detail.m
CLLocationCoordinate2D coordinate;

    coordinate.latitude = [self.latitude intValue];
    coordinate.longitude = [self.longitude intValue];
    [self.mapView setUserInteractionEnabled:NO];

   addAnnotation = [[AddressAnnotation alloc] initWithCoordinate:coordinate];
    [self.mapView addAnnotation:addAnnotation];

私が言ったように、通常は正常に動作しますが、セルを同時に選択するとアプリがクラッシュします。この問題を解決する方法を教えてください。

ありがとう。

4

1 に答える 1

0

解決策を見つけました。クラッシュは、注釈がマップ ビューに読み込まれる前に詳細ビュー コントローラーを切り替えることが原因です。そのためには、ビューが消える間、マップ ビュー デリゲートを nil に設定する必要があります。これが私のコードです。

- (void)viewDidDisappear:(BOOL)animated
{
     [self.mapView setDelegate:nil];
}
于 2013-05-11T10:50:15.030 に答える