2017-12-27 908 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並給它一個高度約束。在該視圖中,我添加了容器視圖。在某些按鈕上,即使我正在改變高度約束的常量值,因此容器視圖也會發生變化。所以它應該工作 –