可能导致tableView的contentSize重置的原因

时间:2014-03-20 14:13:02

标签: ios uitableview contentsize popviewcontrolleranimated

我被困住了。我有一个稍微复杂的视图层次结构。一个UITabBarController来规则三个UINavigationControllers。在每个NavigationController中,我都有一个根UITableViewController,它会产生其他类型的东西。所有都是子类。昨天一切正常,在调整了一些scrollview插件并切换到块后,我遇到了问题。

当我将另一个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可能会出现问题,但我仍然在画一个空白。

我已更新记录的内容包括viewWillLayoutSubviewsviewDidLayoutSubviews。在AutoLayout甚至得到它之前,似乎所有东西都归零了。这个假设是否正确?

修改

当我将视图控制器推到顶部时,同样适当地设置内容大小并将其设置为零的模式也会发生。然后,当我将其弹出时,它会设置正确的contentSize,然后将其删除。

我想出了一个解决方法。我缓存了我的单元格高度,所以在viewWillLayoutSubviews我正确设置了contentSize。如果我以模态方式显示视图,则问题仍然存在,因为未调用viewWillLayoutSubviews。有点奇怪。

1 个答案:

答案 0 :(得分:0)

你说“并在调整了一些scrollview插件之后”。请记住,scrollview的x,y引用与主UIWindow(屏幕)或(UIView)x,y坐标不同。同时摆脱AutoLayout或以编程方式将帧内容设置为所需的x,y位置,宽度和高度。

检查以下代码:

- (void)viewWillLayoutSubviews {
    [super viewWillLayoutSubviews];
}