在标签EXC_BAD_ACCESS之间转换时,应用程序崩溃

时间:2012-08-21 04:45:30

标签: iphone uinavigationcontroller

如果有人有使用它的经验,我可以使用一些帮助调试此问题。我有一个UITabBarController作为我的根视图控制器。每个选项卡的第一个视图控制器是UINavigationController。

标签1: 带有地图的视图是第一个viewController。 当你按下标注时,运行以下代码:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
    [self performSegueWithIdentifier:@"ShowLocationDetails" sender:self];
}

在故事板中,我将其连线为Push

在第一个viewController上,因为我有一张地图而又不想有导航栏显示,所以我这样做:

FirstViewController <UINavigationControllerDelegate>

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    [self.navigationController setNavigationBarHidden:YES animated:NO];
}

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    [self.navigationController setNavigationBarHidden:YES animated:NO];
}

在我推入堆栈的第二个视图控制器上,我确实需要导航栏,所以我有这个代码:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    if ([viewController isKindOfClass:[FirstViewController class]]) {
        [self.navigationController setNavigationBarHidden:YES animated:YES];
    }
    else {
        [self.navigationController setNavigationBarHidden:NO animated:YES];
    }
}

标签2: 现在只是一个tablview。

如果我执行以下简单步骤,我的应用可能会崩溃:

按标注按下LocationDetails。 按返回返回First View Controller 按tab键转到TableViewController 按Tab键返回地图,然后使用EXC_BAD_ACCESS将其崩溃。我试过运行仪器,但我不知道它是什么意思:

enter image description here

如果我启动应用程序,并且只是整天在标签之间切换而不将新控制器推到标签1上的堆栈上,它就不会崩溃。

如果我删除了navigationController的willShowViewController委托方法,它也不会崩溃。但当然,我的导航栏不是我想要的。

有什么想法?谢谢!

EDITED 所以我尝试了Nuzhat说的话,我也遇到了同样的问题。我试过了两个

self.navigationController.navigationBar.hidden = YES;

self.navigationController.navigationBardHidden = YES;

并且它不是我正在寻找的解决方案。当我推送到下一个视图控制器时,导航栏不在那里。当然在那个viewController的viewDidLoad中,我设置了

self.navigationController.navigationBar.hidden = NO;

然后我回到FirstViewController,然后切换标签,仍然崩溃。隐藏导航栏然后再次显示它似乎存在问题。

0 个答案:

没有答案