返回主视图控制器时,"仍然需要自动布局..."崩溃

Lar*_*610 6 exception ios autolayout

我的应用程序启动了一个主菜单,它是被UIViewController调用的自定义子类LVSMainViewController.它嵌入在UINavigationController故事板中设置为初始VC的a中.LVSMainViewController实施-viewDidLayoutSubviews.

点击按钮会将用户带到应用程序的不同部分(不同的VC).用户通过连接到推送segue的按钮返回主菜单.但是,当应用程序再次加载主菜单VC时,它会崩溃并显示以下消息:

2014-08-28 16:11:14.122*断言失败 - [UIView layoutSublayersOfLayer:],/ SourceCache/UIKit_Sim/UIKit-2935.137/UIView.m:8803

2014-08-28 16:11:14.257*由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'将-viewDidLayoutSubviews发送到视图控制器后仍需要自动布局.LVSMainViewController的实现需要将-layoutSubviews发送到视图以调用自动布局.

SO上的其他帖子在以编程方式设置自动布局约束时报告相同的错误(我没有这样做,虽然我在故事板中使用自动布局)和/或使用时UITableView(我在主菜单VC中没有使用)或者它所代表的VC,尽管我在应用程序的其他地方使用它).(见这里这里.)

其他拼图:

  1. 我试着[self.view layoutSubviews];在最后添加-viewDidLayoutSubviews.当我这样做时它不会崩溃.但似乎是不明智的,因为苹果的文件说,

    您不应该直接调用此方法.如果要强制进行布局更新,请在下次绘图更新之前调用setNeedsLayout方法.

  2. 如果我[self.view setNeedsLayout];在最后添加-viewDidLayoutSubviews,应用程序崩溃,首先加载主菜单VC,而不是当我离开它并返回.

可能是什么造成的?

BFa*_*Far 14

崩溃被神奇地修复的原因很可能是因为你现在正在使用iOS 8.你试过在iOS7上运行这个代码吗?

你可以通过电话接近答案[self.view layoutSubviews].

试着[self.view layoutIfNeeded]改为打电话.

看这些帖子:

Autolayout和子视图

自动布局错误


Lar*_*610 -4

Xcode 6.0.1 神奇地修复了崩溃问题。