在StoryBoard中添加一个ViewView标头的视图

时间:2017-04-12 09:13:47

标签: ios swift collections view header

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

我将这两个视图拖到我的collectionView的可重用视图(headerView)中,并且我遇到了这个错误: enter image description here

1 个答案:

答案 0 :(得分:0)

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

要遵循的步骤。

  1. 为该标题视图创建一个类(HeaderViewExample)。
  2. 将类(HeaderViewExample)分配给刚刚在界面构建器中添加的可重用视图。
  3. 为可重用的视图提供可重用的标识符(HeaderViewExample)。
  4. 现在,您可以在可重复使用的视图中添加标签或按钮,并为类 HeaderViewExample 中的这些商店创建商店。
  5. 注意:使用可重复使用的视图时,不要直接在控制器中创建插座。

    现在使用以下代码更新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
      }