我只想显示5个职位从我的WordPress网站到CollectionView在我的Swift应用程序。我是非常新的Swift。我已经设置为网址
https://www.sikhnama.com/wp-json/wp/v2/posts/?categories=4&per_page=5
这只得到5个职位从WordPress的,但在collectionView后5个职位,它重复的职位,但我希望后5个单元格不应该有任何更多的单元格和职位。这是我的代码。
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 2
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int{
return newsData.count + (newsData.count/4)
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if (indexPath.item % 4 == 3){
let adcell = collectionView.dequeueReusableCell(withReuseIdentifier: "adcell", for: indexPath) as! RelatedViewCell
adcell.banner.adUnitID = bannerAd
adcell.banner.rootViewController = self
adcell.banner.load(GADRequest())
adcell.banner.delegate = self
return adcell
}
else{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "postcell", for: indexPath) as! RelatedViewCell
cell.setup(with: newsData[indexPath.row-(indexPath.row/4)])
return cell
}
}
我也试过这个
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int{
return 5
}
然后我在这一行得到错误“索引超出范围”
cell.setup(with: newsData[indexPath.row-(indexPath.row/4)])
也尝试了
cell.setup(with: newsData[indexPath.row])
但是没有用,,帮帮忙
2条答案
按热度按时间66bbxpm51#
根据评论...
使用此代码:
您是说集合视图有两个部分。
但是,在
numberOfItemsInSection
和cellForItemAt
中,您都没有考虑多个部分。因此,您要在每个区段中复制相同的储存格。
除非您真的有2个区段,否则您应该针对
numberOfSections
传回1
yjghlzjz2#
numbersOfItemsInSection函数是您将设置为仅显示5的函数。但如果您从API获取数据,则可能没有5,从而导致“Index out of Range”错误。
我会做什么:
这将检查返回的数据,如果大于5,则仅显示5;如果小于5,则将显示该金额。