1

に移動するためにを含むを含むアプリを実行してMKMapViewいますが、アプリクラッシュで再度ロードしたい場合は、エラーは発生せず、クラッシュして表示するだけです。クラッシュしたマシンコードですが、最初に次のように表示されます。次に、多くのマシンコードが表示されます。back buttonUIViewMKMapViewmain menuUIViewMKMapViewcom.apple.CoreLocation.ConnectionClient.0x1e5d5220

クラッシュレポートはこちらです: ここに画像の説明を入力してください

追加する必要があります。最初にロードしUIViewたときに、 100%機能していることを追加します。

ご協力いただきありがとうございます。

PS:なぜ私が言うのは、おそらくdealloc?そのようなdeallocことをすることで私の問題が解決し、最初に実行するのと同じになると思うからです。

編集1: 私の- (void) viewDidLoad;方法。

- (void)viewDidLoad
{
[super viewDidLoad];
NSString *response = [self sendPostToURL: @"http://hidden.php"
                                withPost: @"hidden"];
[self tratarXML: response];
yo = @"Posición actual";
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.distanceFilter = kCLDistanceFilterNone;
[self.mapView setDelegate: self];
[self.mapView setZoomEnabled: NO];
[self.mapView setScrollEnabled: NO];
if ([CLLocationManager locationServicesEnabled])
{
    self.locationManager.delegate = self;
    self.mapView.showsUserLocation = YES;
    [self.mapView setMapType: MKMapTypeStandard];
    [self.mapView setUserTrackingMode: MKUserTrackingModeFollowWithHeading animated: NO];
    [self.locationManager startUpdatingLocation];
    //[self.locationManager startUpdatingHeading];
    self.mapView.userLocation.title = yo;
}
else
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
                                                    message:@"Debe activar la localización en esta aplicación para funcionar"
                                                   delegate:self
                                          cancelButtonTitle:@"Aceptar"
                                          otherButtonTitles:nil, nil];
    [alert show];
}
}

EDIT2: 私の戻るボタンコード:

- (IBAction) iniciar: (id)sender
{
if ([iniciar.title isEqualToString:@"Volver"])
{
    menuViewController *obj = [[menuViewController alloc] initWithNibName:@"menuViewController" bundle:nil withUser:user];
    [self presentViewController:obj animated:YES completion:nil];
}
else
{
    // censored
}

ストーリーボードなどではなく、単純な*.xibナビゲーターを使用しています...

EDIT3: をロードするメニューボタンMKMapView UIView

- (IBAction) TEST: (id)sender
{
mapaViewController *obj = [[mapaViewController alloc] initWithNibName: @"mapaViewController" bundle: nil withUser: user];
[self presentViewController:obj animated:YES completion:nil];
}
4

2 に答える 2

1

一連のpresentViewController呼び出しを実行して、メインメニューからマップビューコントローラーに移動してから、メインメニューに戻っているようです。これはそれが行われるべき方法ではありません。おそらくモーダルトランジションを実行するべきではありませんが、実行する場合は、メインメニューでマップビューコントローラーを閉じ、マップビューコントローラーに別のメインメニューコントローラーを表示させないようにする必要があります。

これを行うためのより良い方法は、ナビゲーションコントローラーを使用することです。メインメニューはナビゲーションコントローラーのルートビューコントローラーである必要があり、を押してマップビューコントローラーに移動します。ナビゲーションバーに[戻る]ボタンが自動的に表示され、メインメニューコントローラーに(同じインスタンスに)戻ることができます。戻るボタンコードは必要ありません。これはすべて、ストーリーボードに実装する方がはるかに簡単です。

于 2013-03-25T16:45:29.597 に答える
1

間違っていることが3つあります。

  1. 戻るボタンのコードは、を呼び出すのではなく、を呼び出す必要presentViewControllerがありdismissViewControllerます。現在、ViewControllerの後にViewControllerを追加しています!戻ったら、代わりにViewControllerを削除します。
  2. 戻るボタンのコードに、self.locationManager.delegate = nil;
  3. 同様に、戻るボタンのコードに次のように追加しますself.mapView.delegate = nil;

それはそれをする必要があります。

于 2013-03-25T16:51:08.060 に答える