【发布时间】:2016-08-20 11:43:47
【问题描述】:
主视图控制器(我们称之为控制器 1)包含一个滚动视图、一个图像和一个容器视图,该容器视图指向另一个视图控制器并将数据传递给一个 tableView。
Controller 1 滚动视图设置为使用约束正确调整大小,以便 containerView 可以潜在地增加高度。
问题是 tableView 具有动态加载的数据并且其大小发生变化,但这不会反映在 containerView 上。我需要通知我的 containerView 有关 tableView 的新大小,以便它也可以相应地调整大小,并且用户可以滚动整个屏幕,而不仅仅是在 containerView 的默认大小内。
我希望这是有道理的。
我读到了一个名为 preferredContentSizeDidChange 的东西,但我不确定如何正确实施它,或者它是否适用于我的情况。
实施
override func preferredContentSizeDidChangeForChildContentContainer(container: UIContentContainer) {
super.preferredContentSizeDidChangeForChildContentContainer(container)
print(container)
}
在控制器 1 中无效
【问题讨论】:
-
您也可以在您的 ContainerView 中实现您自己的委托方法(设置高度约束) - 并从您的 childViewController (TableView) 调用它来更新高度。
-
不知道能不能测试一下,但是如果顶层没有滚动视图,还会有问题吗?
-
如果我理解你的问题,请告诉我。您是否希望容器随着tableview数据的增加而增长(这将阻止它滚动,因为tableview的完整数据不会溢出)然后当它达到屏幕的总高度时,容器视图应该停止增长并且tableview会溢出并开始滚动?