我被困住了。我有一个稍微复杂的视图层次结构。一个 UITabBarController 来统治三个 UINavigationControllers。在每个 NavigationController 中,我都有一个根 UITableViewController 来生成其他同类。都是子类。昨天一切正常,在调整了一些滚动视图插图并切换到块后,我遇到了问题。
当我将另一个 TableViewController 推到导航堆栈上时,一切正常。但是,当我弹出那个 TableViewController 并记录根 TableViewController 的 contentSize
viewWillAppear contentSize: {320, 15063.414}
viewWillLayoutSubviews contentSize: {0, 0}
viewDidLayoutSubviews contentSize: {0, 0}
viewDidAppear contentSize: {0, 0}
这只发生在从我的自定义 TableViewController 弹出到另一个同类型的 TableViewController 时。知道发生了什么(大概在viewDidLayoutSubviews
)?
我怀疑 TabBarController 或 NavigationController 可能会出现问题,但我仍在画一个空白。
我已经更新了记录的内容以包含viewWillLayoutSubviews
和viewDidLayoutSubviews
. 似乎在 AutoLayout 得到它之前,一切都归零了。这个假设正确吗?
编辑
当我将视图控制器推到顶部时,也会发生正确设置内容大小然后将其设置为零的相同模式。然后当我弹出它时,它会设置正确的 contentSize 然后将其删除。
我想出了一个解决方法。我缓存了我的单元格高度,因此viewWillLayoutSubviews
我正确设置了 contentSize。如果我以模态方式呈现视图,问题仍然存在,因为viewWillLayoutSubviews
没有被调用。还是有些奇怪。