【问题标题】:PushViewController Crash in IOS7IOS7 中的 PushViewController 崩溃
【发布时间】:2013-11-15 16:24:22
【问题描述】:

当我尝试在 xcode5 中使用 IOS6 运行我的旧应用程序时,我在 IOS7 中遇到了奇怪的问题,但一切正常,但是当我尝试推送 Nextview 时,使用 IOS7 时它崩溃了。这是我的应用程序崩溃的代码。

 FamilyBioViewController *detailView=[[FamilyBioViewController alloc] initWithNibName:@"FamilyBioView" bundle:[NSBundle mainBundle]];
 [self.navigationController pushViewController:detailView animated:YES];
 [detailView release];

当崩溃发生时,它没有在控制台中显示任何错误。下面的屏幕截图显示了崩溃结果 有趣的是,当我使用 presentViewController 而不是 pushViewController 那么它在 IOS 7 中工作正常。

FamilyBioViewController *detailView=[[FamilyBioViewController alloc] initWithNibName:@"FamilyBioView" bundle:[NSBundle mainBundle]];
 [self presentViewController:detailView animated:YES completion:nil];
 [detailView release];

所以问题是为什么 pushViewController 会导致 IOS7 出现问题?任何帮助将不胜感激。在此先感谢。

编辑: 有关更多详细信息,请参阅我的应用流程,这是我的 AppDelegate 代码

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
  {
 if(tabBarController.selectedIndex==1 || tabBarController.selectedIndex==3)
 {
    [(UINavigationController *)[tabBarController selectedViewController] popToRootViewControllerAnimated:NO];
}
  }

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
 {
   return YES;
 }

【问题讨论】:

  • 什么选择器被调用而不存在?尝试启用 NSZombie .. 它甚至可能不是 VC :D 谁知道你的 FamilyBioViewController 包含什么
  • FamilyBioViewController 没有太多数据,只有带有静态文本的滚动视图。即使我从视图中删除所有内容并在 pushViewController 不代表 FamilyBioViewController 之后注释所有代码。
  • 您在使用 ARC 吗?我知道我遇到了完全相同的问题,而且这是一个非 ARC 项目。我将它转换为 ARC,然后它就消失了。
  • 尝试对您的项目运行分析。此外,展开堆栈跟踪,以便您可以查看崩溃位置的更多详细信息。
  • 不,它是旧项目,它是 nonArc 。我不想将其更改为 ARC。

标签: ios iphone ios7 pushviewcontroller


【解决方案1】:
FamilyBioViewController *detailView = [[[FamilyBioViewController alloc] initWithNibName:@"FamilyBioView" bundle:[NSBundle mainBundle]] autorelease];
[self.navigationController pushViewController:detailView animated:YES];

---- 编辑---- 我上面的例子不是解决方案!

不要忘记为 navigationController 声明你的第一个 viewController

在 iOS6 中这不是什么大问题。在 iOS7 中

去看看

[[UINavigationController alloc] initWithRootViewController: (UIViewController *)controller]

只有拥有root才能推送!

【讨论】:

【解决方案2】:

视图控制器数组中的视图控制器必须是唯一的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多