Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UICollectionViewDiffableDataSource可选部分_Ios_Swift_Uicollectionview_Diffabledatasource - Fatal编程技术网

Ios UICollectionViewDiffableDataSource可选部分

Ios UICollectionViewDiffableDataSource可选部分,ios,swift,uicollectionview,diffabledatasource,Ios,Swift,Uicollectionview,Diffabledatasource,我正在尝试使用diffable数据源实现一个集合视图。我有一些可选的广告,我想放在集合视图的一个单独部分(用于特定布局等)。我的部分如下所示: enum Section: Int, CaseIterable { case topSection case midSection case advertismentSection case bottomSection } let heigh

我正在尝试使用diffable数据源实现一个集合视图。我有一些可选的广告,我想放在集合视图的一个单独部分(用于特定布局等)。我的部分如下所示:

enum Section: Int, CaseIterable {
            case topSection
            case midSection
            case advertismentSection
            case bottomSection
        }
let heightDimension = NSCollectionLayoutDimension.estimated(200)
广告部分中项目的高度定义如下:

enum Section: Int, CaseIterable {
            case topSection
            case midSection
            case advertismentSection
            case bottomSection
        }
let heightDimension = NSCollectionLayoutDimension.estimated(200)
该高度尺寸随后用于组高度等

当我将项目添加到
广告部分时,这可以正常工作,但是,当它为空时,我会假设它的高度应该为0,但事实并非如此,不管它是否为空,它都是200。当我尝试将高度设为0时,会收到一条警告,表示该高度无效

我尝试过的另一种方法是,当我没有什么可显示时,不将此AdvertisimentSection添加到快照中,但这会使应用程序崩溃,因为快照中的节数需要与节枚举中定义的节数相同


如何解决此问题?

有两种方法可以按枚举追加节:

1. snapshot.appenSections(Section.allcase)
2. snapshot.appenSections([topSection,.midSection,. bottomSection])
如果已经应用了快照,并且需要不同的部分,则必须应用新快照:

var snapshot = NSDiffableDataSourceSnapshot<section,row>
snapShot.appendSection([[topSection,.midSection,. bottomSection]])
dataSource.apply(snapshot)
var snapshot=NSDiffableDataSourceSnapshot
快照.appendSection([[topSection、.MidsSection、.bottomSection]])
dataSource.apply(快照)