2017-12-27 335 views
1

tavleview我的观点一个结构:IOS调整滚动视图通过containerview里面

vc 
-view 
--safe area 
--scrollview 
---view 
----containerview1 
----containerview2 
----containerview3 
-----tableviewcontroller(in containervew3) 

Tableviewcontroller具有添加或删除行按钮,我想调整滚动视图,它显示完整的实现代码如下内容(无需滚动实现代码如下)。我试图解决像:从hereSizing a Container View with a controller of dynamic size inside a scrollview但没有成功。我使用iOS 10.0 & swift

回答

0

首先是约束。你必须有适当的约束与UIScrollView和容器的观点

你需要接下来的事情是tableviewController高度限制(可以给予高度0与关系比等于750的优先级更高,从而约束永远不会打破,如果发生了什么错误)

当您的数据插入/删除发生时,将IBOutlet的高度限制发生,您的内容大小将发生变化并将contentize设置为IBOutlet约束的常量,并且不会忘记layoutIfNeeded。

让你的tableview滚动弹跳假

创建以通知高度变化容器视图

protocol ContainerTableDelegate { 
     func dataChanged(height: CGFloat) 
} 

当高度变化通知父视图控制器

delegate?.dataChanged(self.heightConstraint.constant) 

现在在主viewcontroller你有所有容器

实施

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 

识别的ViewController委托设为self实施委托和改变容器视图3恒定的高度(你还需要这一点)

希望这将有助于解决您的问题

+0

感谢响应Prashant Tukadiya,但不幸的是,容器视图不会改变它的大小,我也试图使它比multiply,委托工程,约束集,layoutIfNeeded也调用需要更大(我检查它通过手动使scrollview内容大小更大的函数应用新身高)也尝试添加tableviewController.view.translatesAutoresizingMaskIntoConstraints = false但没有成功 –

+0

@AntonLisitsyn我已经创建了UIView并给它一个高度约束。在该视图中,我添加了容器视图。在某些按钮上,即使我正在改变高度约束的常量值,因此容器视图也会发生变化。所以它应该工作 –