推送视图控制器未推送 ios 7
Posted
技术标签:
【中文标题】推送视图控制器未推送 ios 7【英文标题】:Push view controller is not pushing on ios 7 【发布时间】:2015-07-01 18:59:54 【问题描述】:我有 3 个 VC(视图控制器)(VC1、VC2、VC3)。
在VC1,我使用了代码:
self.navViewController = [[UINavigationController alloc] initWithRootViewController:viewController];
self.navViewController.view.frame = CGRectMake(self.view.frame.size.width - viewController.view.frame.size.width,
viewController.view.frame.origin.y,
viewController.view.frame.size.width,
viewController.view.frame.size.height);
[self.navigationController addChildViewController:self.navViewController];
[self.navigationController.view addSubview:self.navViewController.view];
[self.navViewController didMoveToParentViewController:self.navigationController];
VC2 正在显示,然后在 VC2 我使用代码将导航控制器推送到 VC3
VC3 *vc3 = [[VC3 alloc] initWithNibName:@"VC3" bundle:nil];
[vc3.view updateConstraintsIfNeeded];
[self.navigationController pushViewController:vc3 animated:YES];
目前,当我添加 sn-p 代码 [vc3.view updateConstraintsIfNeeded];
时。我看到导航改变和内容视图没有改变和显示。它只是显示了 VC2 的内容视图。
在我的项目中,我使用的是自动布局。我尝试在我的项目中删除自动布局,它运行良好。当我添加自动布局时,它会出错。
它只发生在 ios 7 上,iOS 8 运行良好。
请帮我解决这个错误。非常感谢!
【问题讨论】:
【参考方案1】:问题是您将 VC2 显示在推送的视图控制器之上。将一个视图控制器作为导航控制器的子级的原因是什么?相反,拥有 VC2 和导航控制器的共同祖先,或者将 VC2 放在视图层次结构中的其他位置,而不是位于导航控制器的 view
之上,后者包含整个导航控制器(包括推送中包含的控制器) stack) 视图层次结构。
【讨论】:
你的回答是对的。不过,我有一个小问题。为什么它只出现在 iOS 7 上? 很可能是内部视图层次结构发生了变化,或者 Apple 将推送的视图置于其他视图之上。以上是关于推送视图控制器未推送 ios 7的主要内容,如果未能解决你的问题,请参考以下文章
IOS / Objective-C / Storyboard:推送视图控制器的后退按钮未激活
iOS 7 UINavigationController 推送动画阴影
当项目使用自动布局时,导航控制器无法在 iOS 7 中推送视图控制器