1

我正在做一个应用程序,该应用程序包含一个包含MKMapView要转到的应用程序,没关系,但是当我想再次加载应用程序崩溃时,它不会给出任何错误,只是崩溃并显示它崩溃的机器代码,但它首先说:然后是很多机器代码。back buttonUIViewMKMapViewmain menuUIViewMKMapViewcom.apple.CoreLocation.ConnectionClient.0x1e5d5220

崩溃报告在这里: 在此处输入图像描述

我必须补充一点,我第一次加载UIView它是100% 工作的。

谢谢你的帮助。

PS:为什么这么说dealloc?是因为我认为做类似的事情dealloc可能会解决我的问题,并且与第一次运行相同。

EDIT1: 我的- (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

有3件事是错误的:

  1. 您的后退按钮代码不应调用 apresentViewController而是 a dismissViewController。现在您正在视图控制器之后添加视图控制器!当你回去时,你想摆脱你的视图控制器。
  2. 在后退按钮代码中,添加self.locationManager.delegate = nil;
  3. 同样,在返回按钮代码中,添加self.mapView.delegate = nil;

那应该这样做。

于 2013-03-25T16:51:08.060 回答
1

看起来您正在执行一系列 presentViewController 调用以从主菜单转到地图视图控制器,然后返回主菜单。这不是应该做的。您可能根本不应该进行模态转换,但如果这样做,您应该让主菜单关闭地图视图控制器,而不是让地图视图控制器呈现另一个主菜单控制器。

更好的方法是使用导航控制器。主菜单应该是导航控制器的根视图控制器,您将按下以转到地图视图控制器。您将在导航栏中自动获得一个后退按钮,它将带您返回(返回到同一实例)主菜单控制器。无需任何后退按钮代码。所有这些在故事板中实现起来会容易得多。

于 2013-03-25T16:45:29.597 回答