嵌套集合视图 Swift 4.2

Posted

技术标签:

【中文标题】嵌套集合视图 Swift 4.2【英文标题】:Nested collection view Swift 4.2 【发布时间】:2019-01-23 02:44:22 【问题描述】:

我有一个视图控制器,它有一个具有三个单元格的水平集合视图。在每个单元格内,我有一个垂直的集合视图,它有 2 个部分。第一个部分有一个单元格,第二个部分是 Dynamics 它可以有任意数量的单元格。在具有一个单元格的垂直集合视图的第一部分中,它具有一个可以具有任意数量的单元格的水平集合视图。

问题:当垂直集合视图的第一部分内的最内层集合视图滚动时,当它到达集合视图的末尾时,我想禁用滚动,以便具有三个单元格的最外层集合视图可以滚动,并且紧接着我想启用最里面的集合视图的滚动。这样它就可以再次滚动。这就像滚动视图或集合视图

【问题讨论】:

当你说禁用滚动时,你的意思是禁用双向滚动(从左到右和从右到左)? 您能否分享一下您需要的屏幕截图。 @pooja 是的。当我到达灰色集合视图的最后一个单元格时,我需要它停止工作,如果我停止滚动内部集合视图,它将自动滚动到外部集合视图的下一个单元格(红色)。但我想要识别最后一个单元格的事件。当它停止时它会滚动到下一个,但是在到达红色集合视图的下一个单元格后,我想启用灰色集合视图的滚动 @VDPurohit 。请检查屏幕截图 【参考方案1】:

这是一个类似的例子,它在另一个集合视图单元格中有集合视图

GitHub sample

这里我试图在内部集合视图中获取最后一个单元格显示事件并禁用滚动。

override func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) 
        //Checking if its not the inner collection view
        if(collectionView.restorationIdentifier != "Collection")
        
            //scrolled till datasource.count -1 == 14 in our case
            if( indexPath.row == 14)

                //Disabling the scrolling
                collectionView.isScrollEnabled = false;

                //Saved the collection view , so that the scrolling can be enabled later.
                scrolldisabledCollectionView = collectionView;
            
        

    

并且当外部集合视图滚动时,内部集合视图被启用。

 override func scrollViewDidEndDecelerating(_ scrollView: UIScrollView)
    
        if(collectionView?.restorationIdentifier == "Collection")
        
            scrolldisabledCollectionView?.isScrollEnabled = true
        
    

【讨论】:

在 2 个集合视图中滚动是自动工作的,但我需要三个集合视图的答案。最里面的集合视图是垂直单元格的委托和数据源,位于 indexpath 部分 0 和单元格 0。感谢您的回答。 能否请您指定问题中上传的图片中的第三个集合视图,以及第三个集合视图的流动方向是什么 灰色是最里面的集合视图,我只想在滚动结束时开始和停止这个集合的滚动。并在滚动红色的外部集合视图后重新开始。它会自动发生。我只想停止并开始滚动灰色集合视图。 我已经尝试了三个集合视图,它可以工作你可以从这里获取示例github.com/pooja-kamath/TripleCollectionView

以上是关于嵌套集合视图 Swift 4.2的主要内容,如果未能解决你的问题,请参考以下文章

自 Xcode 12 (Swift 5.3) 以来,嵌套集合视图不响应单元格选择

使用 POST 请求 iOS Swift 3 发送嵌套 JSON

swift 4.2 ios 12中的状态栏模糊视图(半透明)

Swift 嵌套堆栈视图

如何使用 Swift 4.2 设置标志并将一些值从 Popup 呈现模型视图控制器传递到 Tabbar 主视图控制器?

带有嵌套导航视图的 Swift UI