我用Xcode制作Swift应用程序,并使用CollectionViewCell从我的WordPress网站获取数据。我在我的CollectionView中有2个单元格,一个用于加载帖子,第二个用于Google AdMob,我想在4个帖子后显示广告,这是一个很好的工作,但现在的问题是,当第二个单元格被加载时,我的意思是AdMob单元格加载了,然后这个数字的帖子隐藏在它后面,就像如果有1、2、3、4、5和4个帖子后的广告加载的帖子,那么5个帖子是没有的。这是我的代码
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if (indexPath.item % 5 == 1){
let adcell = collectionView.dequeueReusableCell(withReuseIdentifier: "adcell", for: indexPath) as! MovieCollectionViewCell
// Google Ads Here
return adcell
}
else{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MovieCollectionViewCell", for: indexPath) as! MovieCollectionViewCell
cell.setup(with: newsData[indexPath.row])
return cell
}
}
请帮助我解决这个问题,我想加载广告,但当广告加载该数字的帖子应该加载在下一个项目单元格..由于
首先,您在if
块中使用indexPath.item
,在else
块中使用indexPath.row
,这可能有点令人困惑,但这不是这里的问题。
indexPath.item
在第五个单元格上为4,因此if
条件解析为true
,并返回adcell
。在第六个单元格中,indexPath.row
现在是5,因此直接跳过索引为4的newsData
的第五项。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if (indexPath.item % 5 == 4){
let adcell = collectionView.dequeueReusableCell(withReuseIdentifier: "adcell", for: indexPath) as! MovieCollectionViewCell
// Google Ads Here
return adcell
}
else {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MovieCollectionViewCell", for: indexPath) as! MovieCollectionViewCell
cell.setup(with: newsData[indexPath.item-(indexPath.item/5])
return cell
}
}
编辑:
如果还没有完成:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return newsData.count + (newsData.count/5)
}