【问题标题】:Push view controller is not pushing on ios 7推送视图控制器未推送 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 运行良好。

请帮我解决这个错误。非常感谢!

【问题讨论】:

    标签: ios objective-c iphone


    【解决方案1】:

    问题是您将 VC2 显示在推送的视图控制器之上。将一个视图控制器作为导航控制器的子级的原因是什么?相反,拥有 VC2 和导航控制器的共同祖先,或者将 VC2 放在视图层次结构中的其他位置,而不是位于导航控制器的 view 之上,后者包含整个导航控制器(包括推送中包含的控制器) stack) 视图层次结构。

    【讨论】:

    • 你的回答是对的。不过,我有一个小问题。为什么它只出现在 iOS 7 上?
    • 很可能是内部视图层次结构发生了变化,或者 Apple 将推送的视图置于其他视图之上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 2016-11-20
    • 2016-10-22
    相关资源
    最近更新 更多