具有自定义布局的UICollectionView - 无法在故事板中添加补充视图

时间:2013-05-25 22:04:26

标签: ios uicollectionview

来自Collection View Programming Guide for IOS


注册您的单元格和补充视图

您可以通过编程方式或在应用的故事板文件中配置集合视图的单元格和视图。

  • 要在故事板中配置单元格和视图:

    在故事板中配置单元格和补充视图时,可以通过将项目拖动到集合视图并在其中进行配置来实现。这将在集合视图与相应的单元格或视图之间创建关系。

    • 对于单元格,从对象库中拖动“集合视图单元”并将其放到集合视图中。将单元格的自定义类和集合可重用视图标识符设置为适当的值。
    • 对于补充视图,从对象库中拖动Collection Reusable View并将其放到集合视图中。将视图的自定义类和集合可重用视图标识符设置为适当的值。

只要布局设置为Custom而不是Flow,我就无法将Collection Reusable View放到我的storyboard中的集合视图中。如果我在布局设置为流时删除一个,那么一旦我将布局设置回自定义,它就会消失。

如果我将它放在集合视图之外,作为顶级对象,它不会在运行时使用,即使类和标识符都设置正确。相反,我得到一个错误告诉我,我必须注册补充视图。如果我手动注册,它需要使用故事板中的视觉设计。

关于这是如何工作的任何建议?

3 个答案:

答案 0 :(得分:10)

只有当您的布局是UICollectionViewFlowLayout的子类时,才能执行此操作。

  
      
  1. 不要在情节提要中指定自定义布局。
  2.   
  3. 选择流程布局并设计补充视图。
  4.   
  5. 然后在viewcontroller中以编程方式创建并分配新布局   对象集合。
  6.   
  7. 在布局对象上调用InvalidateLayout
  8.   
  9. 使用您在故事板中设计的补充视图和自定义布局
  10.   

这对我有用。希望它也可以帮助其他人!

答案 1 :(得分:5)

您无法使用自定义布局 向故事板添加补充视图。补充视图由布局对象管理。只有布局知道它的位置,数字..没有必要通过布局对象实现补充视图。这是布局对象的关注点。 UICollectionViewFlowLayout提供了补充视图(章节页眉/页脚)。所以你可以在故事板中设计它。如果您使用自定义布局,故事板如何知道它是否支持补充视图。所以它会给你这份工作。 您必须为补充观点注册课程/ nib

答案 2 :(得分:0)

来自当前最佳答案的评论似乎是最佳解决方案。

  

如果您的自定义布局是UICollectionViewFlowLayout的子类,请打开Storyboard编辑器,然后在Collection View对象下的左对象列表中选择流布局(黄色多维数据集)。然后在“Identity Inspector”中选择您的后代类。而已。无需更改代码

     

- adnako