2017-10-10 30 views
0

我的主頁面中有一個視圖控制器,其中包含一個tableview; 在tableview的行中,我拖動並添加了一個集合視圖。將自定義UICollectionViewController與子視圖相關聯

在故事板中,我可以單擊拖動集合視圖的代表和數據源到主視圖控制器(非常簡單)。

但是我喜歡將這些綁定到UICollectionViewController的自定義子類(對於集合擁有一個自包含的MVC),而不是在主頁的視圖控制器上進行回覆。我怎樣才能做到這一點? (關聯自定義控制器類與集合視圖?)

我必須使用容器視圖控制器嗎?什麼是這樣的東西的正確方法?

我是iOS新手,非常感謝任何指導。

回答

0

您可以將容器視圖拖到行中,而不是集合視圖。然後將集合視圖拖到容器的關聯視圖控制器場景中。將該類(在InterfaceBuilder的身份檢查器選項卡右側)更改爲您的自定義視圖控制器類。

---回答結束--- 現在有了這個說法,考慮採用比MVC更多的MVVM方法。通過這個,我的意思是簡單地說,不用爲了MVC而拆分視圖控制器,而是保持所有視圖控制器的簡單。讓每個人擁有一個(或多個)ViewModel,其中所有與該視圖控制器相關聯的業務邏輯都存在。每個ViewModel(如果你願意的話,它只是一個NSObject,甚至是一個Swift結構體)都可以單獨進行單元測試,而不涉及任何UI。視圖控制器只是將來自ViewModel的數據連接到控件&視圖,並配置控件&視圖,同時依賴viewModel進行任何決策。它將從根本上改善您的架構,以最小的努力。希望這可以幫助!

+0

感謝您的快速回復!因此,要確認 - MVVM放在一邊 - 拖動一個容器視圖似乎是處理這種類型嵌套體系結構的「正確或標準」機制,當然如果你不想污染父頁面的視圖控制器來管理子視圖。我想「容器視圖」方法也有好處:嵌套視圖在某種程度上被視爲自包含的小部件(更好的組件共享)。 – Tray

+0

是的,容器視圖是將場景拆分爲多個視圖控制器的方式。請注意,「容器視圖」實際上只是一個UIView,但故事板的處理方式不同,故事板會提醒自己在加載時爲該UIView實例化單獨的UIViewController。至於你的第二個「好處」,你已經在你的單元格視圖中的視圖意義上嵌套了視圖。雖然我會授予您將容器視圖看作故事板中單獨的場景,可以幫助您在故事板中更好地組織。 – Smartcat

+0

我非常感謝您的回覆。 – Tray

相關問題