我可以将集合视图添加到集合视图部分标题吗?

Posted

技术标签:

【中文标题】我可以将集合视图添加到集合视图部分标题吗?【英文标题】:Can I add a collection view to a collection view section header? 【发布时间】:2019-09-16 00:54:58 【问题描述】:

所以我想弄清楚如何在名称视图控制器上添加两个集合视图。现在我拥有的当前集合视图是一个垂直滚动的集合视图,它显示用户在提要上的帖子。我想添加一个在顶部水平滚动的“要关注的人”部分。请注意,我希望水平集合视图与整个视图一起向下滚动。

看起来像这样的东西

我考虑过添加一个节标题,然后尝试在其中添加一个集合视图,但我不确定这是否是非法配置。

我也不确定是否需要在 number of sections 行中添加 2 个部分。

这是当前的集合视图代码。


@IBOutlet weak var collectionView: UICollectionView!

    // MARK: - UICollectionViewDataSource

     func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) 
        if posts.count > 4 
            if indexPath.item == posts.count - 1 
                fetchPosts()
            
        
    

     func numberOfSections(in collectionView: UICollectionView) -> Int 
        return 1
    

     func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
        if viewSinglePost 
            return 1
         else 
            if posts.count == 0 
            self.collectionView.setEmptyMessage("You haven't followed anyone yet.")
             else 
                self.collectionView.restore()
            
            return posts.count
        
    

     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "PostsCell", for: indexPath) as! FollowingCell

        cell.delegate = self

        if viewSinglePost 
            if let post = self.post 
                cell.post = post

            
         else 
            cell.post = posts[indexPath.item]
        

            handleUsernameLabelTapped(forCell: cell)
            handleMentionTapped(forCell: cell)
            handleHashtagTapped(forCell: cell)

        return cell
    

现在它只是一个基本的提要,可以获取用户上传的帖子。我认为包含一个新用途的关注部分会是很好的用户体验。我应该怎么做?

【问题讨论】:

实际上要添加两个集合视图? Topper是水平的,底部是垂直的?如果是这样,那我会详细回答你的问题 @AnkurLahiry 是的,但是我希望水平集合视图随着整个视图向下滚动。这就是为什么我的第一个想法是添加一个节标题,然后将水平集合视图放在其中。然后返回我想在那里展示的个人资料。 【参考方案1】:

好像你想添加两个集合视图,一个是水平的,一个是垂直的,一个是垂直的

在故事板中添加两个集合视图,给第一个 静态高度,从情节提要中取出插座,并给插座名称命名为UpperCollectionViewLowerCollectionView

将委托和数据源设置为 collectionViews

upperCollectionView.delegate = self 
upperCollectionView.dataSource = self 
lowerCollectionView.delegate = self 
lowerCollectionView.dataSource = self 

在所有委托方法的情况下,使用if - else方法实现collectionViews

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
    if collectionView == upperCollectionView 
        //do code for upperCollectionView 
     else 
        //do code for  lowerCollectionView 
    



如果看起来很复杂,那么我建议你拆分,父视图控制器的上半部分和容器视图的下半部分。

如果您想像 tableView 滚动一样向上滚动整个内容,请将所有这些添加到 UIScrollView 上,这将处理滚动。

【讨论】:

上面的会修复吗?我仍然希望它随着整个视图向下滚动。 然后你添加一个滚动视图作为基础,然后将整个东西设置到这个【参考方案2】:

如果您问我,我会建议一个包含 2 个单元格的表格视图,第一个单元格用于集合视图,第二个单元格是您的正常单元格。这样您就可以双向滚动。但是如果你只想使用collectionview,那么你需要为collection view添加标签并根据你的标签进行配置,即

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
if collectionView.tag == 1 
// your horizantal collection view
 else 
//vertical one

【讨论】:

那么让它双向滚动的唯一方法是添加一个包含 2 个单元格的表格视图?然后在每个表格视图单元格中添加集合视图? 我说这是另一种方式。不是唯一的方法。我已经用了很长时间了,效果很好【参考方案3】:

您可以将第一个索引定义为另一个集合视图。

【讨论】:

如果您不介意,能否再详细说明一下?

以上是关于我可以将集合视图添加到集合视图部分标题吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用情节提要将集合视图部分项目滚动到水平

在 ios 8 中将集合或表格视图或自定义视图添加到滚动视图

如何在下面顶部的集合视图中为部分添加标题

要在开头添加的集合视图单元格

无法在集合视图中选择几个单元格

如何在不丢失表格视图单元格的情况下将现有集合视图添加到表格视图