簡述
? ? ? ?在開發一個復雜頁面時,我們總是希望能夠降低頁面中控件的耦合度或者讓單獨的控制器去管理某個稍微復雜些的控件,即使用一個類似容器的控制器來管理頁面中控件的擴及。在最近的storyboard開發中,使用到了一個新的方便的控件——container view,寫了一些簡單的demo,來測試一下這個控件并總結一下簡單的用法。
container view
大致的表述是在這個container view會建立一個和子控制器連接的segue,我們可以在父控制器中放入container view控件,每一個container view會自動創建一個關聯的controller。controller中view的尺寸會隨著container view的尺寸變化。
tips:控制器view的背景色優先級是大于container view的背景色。
父控制器中獲取子控制器
? ? ?界面創建完畢以后,最主要的就是在父控制中能夠獲取到子控制器,來進行一些操作。剛開始試的時候發現container view關聯到控制器中只是一個uiview的類。獲取對應的控制器比較麻煩。但是View和Controller 是通過segue來連接的。于是就考慮使用segue的代理方法方法來獲取。
首先在父控制器中聲明兩個控制器 leftVC 和rightVC,然后在
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
? ? ? ? ? if ([segue.identifier isEqualToString:@"left"]) {
? ? ? ? ? ? ? ? self.leftVC =? [segue destinationViewController];
? ? ? ? ? ?}else if ([segue.identifier isEqualToString:@"right"]){
? ? ? ? ? ? ? ? ?self.rightVC=? [segue destinationViewController];
? ? ? ? ? ? }
}
這個方法是優先于父控制器viewdidload執行的。所以獲取到子控制器后可以在viewdidload中對子控制器進行操作。
Over
簡單的記錄一下container view的用法,以后再遇到新的用法會更新,也歡迎大家一起討論怎么使用。