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

时间:2019-09-16 00:54:58

标签: ios swift uicollectionview uiscrollview

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

看起来像这样的东西

enter image description here

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

我也不确定是否需要在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
    }

现在,它只是一个基本的供稿,它将获取用户上传的帖子。我认为,包括一些新用途的人员来参加将是很棒的用户体验。我最好的解决方法是什么?

3 个答案:

答案 0 :(得分:0)

好像您想添加两个集合视图,一个用于水平的上视图,而垂直的下视图

  • 在情节提要中添加两个收藏夹视图,为第一个提供一个 静态高度,从情节提要中获取出口,并给出口名称起类似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 
    }
}


如果看起来复杂,那么我建议您拆分一下,上半部分在父viewController中,下半部分在容器视图中。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:-1)

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