将视图添加到 StoryBoard 中的 CollectionView 标题

Posted

技术标签:

【中文标题】将视图添加到 StoryBoard 中的 CollectionView 标题【英文标题】:Add a view to CollectionView header in StoryBoard 【发布时间】:2017-04-12 09:13:47 【问题描述】:

我的 CollectionView 顶部有 2 个视图,只想滚动所有这 3 个视图。我知道最好的方法是将这两个顶部视图放在我的 collectionView 标题中。如何在没有任何代码的情况下在情节提要(界面构建器)中实现这一点? (我在我的另一个 tableView 中使用这种方式,但我无法使用 CollectionoView 执行此操作)

我将这 2 个视图拖到我的 collectionView 的 reusableView(headerView) 中,我遇到了这个错误: enter image description here

【问题讨论】:

我建议你在底部使用滚动视图,并在其顶部设置视图和集合视图。这实际上会在未来为您带来更好的结果 Apple 不推荐使用此解决方案,因为两个滚动重叠,即使我禁用 collectionView 的滚动属性,另一个问题是我没有确切的 contentView 高度(CollectionView 的高度是动态的)对我的 scrollView 说,这将在 IB @SivajeeBattina 中导致错误 不,你可以找出collection view的高度。使用 collectionView.ContentSize 属性来获取它的高度。 我应该在 storyboard 中设置 secrollView 的 contentView 的大小,在 IB 中我不能动态设置 CollectionView 的高度。 集合视图加载完成后,您可以设置滚动视图的内容高度对吗? 【参考方案1】:

您无法在界面构建器中拖放并获取集合视图的标题视图。您必须另外实现返回 UICollectionReusableView 的 viewForSupplementaryElementOfKind 方法。在使用集合可重用视图时,我们必须以不同的方式处理该视图,类似于我们为可重用单元所做的事情。

要遵循的步骤。

    为该标题视图创建一个类 (HeaderViewExample)。 将类 (HeaderViewExample) 分配给您刚刚在界面生成器中添加的可重用视图。 为该可重用视图提供可重用标识符 (HeaderViewExample)。 现在您向可重用视图添加标签或按钮,并在 HeaderViewExample 类中为这些出口创建出口。

(注意:在使用可重用视图时,不要直接在控制器中创建插座。)

现在用下面的代码更新你的 CollectionViewController。

override func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: 
NSIndexPath) -> UICollectionReusableView 

    var reusableView = UICollectionReusableView()

    if kind == UICollectionElementKindSectionHeader 
          guard let view = collectionView?.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: String(HeaderViewExample), forIndexPath: indexPath) as? HeaderViewExample else  return reusableView 
          view.label = "Test String"
          view.backgroundColor = UIColor.redColor()
     else 
      assert(false, "Unexpected element kind")
    

    return reusableView
  

【讨论】:

我这样做了,但我得到另一个错误,说:“〜/ Main.storyboard:错误:非法配置:从LiveViewController到iCarousel的liveCarousel插座无效。插座无法连接到重复内容。”我应该如何将视图的出口连接到主视图控制器?

以上是关于将视图添加到 StoryBoard 中的 CollectionView 标题的主要内容,如果未能解决你的问题,请参考以下文章

将 Storyboard 视图中的所有内容移动到滚动视图中

从 xib 文件移动到 Objective C 中的视图控制器

通过 xib 或 storyboard 将子视图添加到 UICollectionViewCell 的 contentView

如何将 UITableView 作为子视图添加到 xib 中的 UIView?

如何在 Storyboard 的 Touch Bar 中添加滚动视图?

在 UIViewController Storyboard 中访问 UIView