2017-10-10 63 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

相关问题