Ios UICollectionViewDiffableDataSource可选部分
我正在尝试使用diffable数据源实现一个集合视图。我有一些可选的广告,我想放在集合视图的一个单独部分(用于特定布局等)。我的部分如下所示: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
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(快照)