我可以将集合视图添加到集合视图部分标题吗?
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】:好像你想添加两个集合视图,一个是水平的,一个是垂直的,一个是垂直的
在故事板中添加两个集合视图,给第一个
静态高度,从情节提要中取出插座,并给插座名称命名为UpperCollectionView
和LowerCollectionView
将委托和数据源设置为 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】:您可以将第一个索引定义为另一个集合视图。
【讨论】:
如果您不介意,能否再详细说明一下?以上是关于我可以将集合视图添加到集合视图部分标题吗?的主要内容,如果未能解决你的问题,请参考以下文章