将视图添加到 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 标题的主要内容,如果未能解决你的问题,请参考以下文章
从 xib 文件移动到 Objective C 中的视图控制器
通过 xib 或 storyboard 将子视图添加到 UICollectionViewCell 的 contentView
如何将 UITableView 作为子视图添加到 xib 中的 UIView?