在我的应用程序中,我有一个主页,其中有一个带有多个部分的卡片/网格布局。因此,UICollectionView是此处的明显选择。但是这些卡的设计差异很大,也加载了数据及其功能。因此,将所有这些集成到一个 Controller 中将非常麻烦,复杂且难以维护。因此,我们认为我们需要将它们分成自己的UIViewControllers。每个处理一种卡,并计算要显示在卡内的contentSize。我们的主主页 Controller 仅负责将这些viewcontroller View 放入UICollectionView单元内。

总结一下,

  • 一个HomeViewController,它具有CollectionView
  • collectionViewCell中的每个 View 及其数据均由其自己的 Controller Class维护。
  • Controller 的所有实例都在HomeViewController和added as its children内部。-Apple Guide
  • 到所有子级viewController的
  • The appearance call都是我们自己制作的,因为 Controller View 的contentSize(将其用作collectionView布局的项目大小)计算需要加载 View 并设置数据。

  • 我的问题是,这个设计选择正确吗?或者您选择采用哪种方法来实现这种屏幕?由于我们创建了许多viewControllers(每个单元格一个),这会影响内存或性能吗?而且,如果我只想缓存一些viewController或在用户滚动时加载它们,或者何时将其添加到collectionView单元中,则该如何处理,因为计算该单元的大小取决于放置时的数据和 View 出CollectionView布局。

    最佳答案

    我认为您的方法是有效的,并且从理论上讲,将 View 与数据分离是有意义的。但是,在这种情况下,我宁愿让UICollectionViewCell子类实现自己的数据,基本上充当viewController。这将简化您的代码,因为您不需要添加的viewControllers及其附带的代码;相反,您可以简单地将tableView添加到单元格的contentView中。这对我来说似乎很自然,因为这样,您可以让HomeViewController的collectionView在单元格移出屏幕后以及在加载过程中自动处理调用其委托(delegate)的操作。您无需将有关其身份或何时加载的消息发送到单元,所有这些都将自动为您处理。另外,我真的不认为在每个单元格上都有 View 生命周期方法是有值(value)的,并且不像将单元格加载和刷新作为collectionView的一部分那样直观。无论哪种方法,祝您好运!

    关于ios - 将UIViewcontrollers嵌入UICollectionviewCells中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27407138/

    10-11 15:05