我的应用程序的层次结构看起来像这样子视图控制器来调整containerView
主视图控制器(让我们称之为控制器1)包含一个滚动视图,图像以及指向其它的viewController和将数据传送给的tableView一个containerView 。
控制器1的滚动视图被设置为使用约束正确调整大小,以便containerView可以在高度上增长。
问题是tableView有动态加载的数据,它的大小发生了变化,但是这并不反映在containerView上。我需要我的containerView通知有关tableView的新大小,以便它可以相应调整大小,用户可以滚动浏览整个屏幕,而不仅仅是默认大小的containerView。
我希望这是有道理的。
我读了一些名为preferredContentSizeDidChange的东西,但我不确定如何正确实施它,或者它是否适用于我的情况。
实施
override func preferredContentSizeDidChangeForChildContentContainer(container: UIContentContainer) {
super.preferredContentSizeDidChangeForChildContentContainer(container)
print(container)
}
在控制器1并没有影响
你也可以在你的ContainerView中实现你自己的委托方法(设置高度约束) - 并从你的childViewController(TableView)调用它来更新高度。 – derdida
我不知道你是否可以测试这个,但是,如果你没有顶层的滚动视图,会不会有问题? –
请告诉我,如果我正确理解你的问题。你希望容器随着表视图数据的增加而增长(这将阻止它滚动,因为tableview的完整数据不会溢出),然后当它达到屏幕的总高度时,容器视图应该停止增长并且tableview会溢出并开始滚动? – kerry