Ios 具有不同单元格数的viewController中的多个集合视图
似乎有一个类似的问题,但它并没有解决我的问题 我在viewController中创建了两个CollectionView,如下所示:Ios 具有不同单元格数的viewController中的多个集合视图,ios,swift,uicollectionview,Ios,Swift,Uicollectionview,似乎有一个类似的问题,但它并没有解决我的问题 我在viewController中创建了两个CollectionView,如下所示: let y = self.view.frame.height titleView = UIView(frame : CGRect(x: 0 , y: 50 , width: self.view.frame.width, height: y - 100 )) let middle = CGPoint(x: 10, y: titleView.bounds.he
let y = self.view.frame.height
titleView = UIView(frame : CGRect(x: 0 , y: 50 , width: self.view.frame.width, height: y - 100 ))
let middle = CGPoint(x: 10, y: titleView.bounds.height/10)
let frame = CGRect(origin: middle , size: CGSize(width: self.view.frame.width - 20 , height: 70))
let layout = UICollectionViewFlowLayout()
fontCollection = UICollectionView(frame: frame, collectionViewLayout: layout)
fontCollection.dataSource = self
fontCollection.delegate = self
fontCollection.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "fontsIdentifier")
fontCollection.backgroundColor = UIColor.white
// Do any additional setup after
colorCollection = UICollectionView(frame: frame, collectionViewLayout: layout)
//colorCollection.frame.origin.y = fontCollection.frame.origin.y + (2 * fontCollection.frame.height)
colorCollection.dataSource = self
colorCollection.delegate = self
colorCollection.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "colorsIdentifier")
colorCollection.backgroundColor = UIColor.white
// Do any additional setup after
以下是我的UICollectionViewDataSource
方法:
func numberOfSections(in collectionView: UICollectionView) -> Int {
collectionView.reloadData()
collectionView.collectionViewLayout.invalidateLayout()
return 1
}
public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if(collectionView == self.colorCollection ){
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "colorsIdentifier", for: indexPath)
cell.backgroundColor = .darkGray
return cell
} else {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "fontsIdentifier", for: indexPath)
cell.backgroundColor = .gray
return cell
}
}
然后我使用分段控件
在两个集合视图
之间切换。
到目前为止,一切都按预期进行。但是,当我想为collectionView
分配不同数量的单元格时,我会遇到以下错误:
UICollectionView收到了具有索引的单元格的布局属性
不存在的路径:{length=
2,路径=0-6}
这是我的numberofitemsinssection
方法
public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if(collectionView == self.colorCollection ){ return 9 }
else if(collectionView == self.fontCollection ){ return 6 }
return 0
}
我做错什么了吗?我错过了什么 正如@Rajesh73在评论中指出的,问题在于将一个布局分配给两个
collectionview
。所以我给了两个CollectionView不同的布局,解决了这个问题
从而取代
let layout = UICollectionViewFlowLayout()
fontCollection = UICollectionView(frame: frame, collectionViewLayout: layout)
colorCollection = UICollectionView(frame: frame, collectionViewLayout: layout)
与
解决了这个问题 参考此链接我参考了此链接中的解决方案,但不幸的是,这似乎无法解决我的问题。发布重新加载CollectionView的代码我已更新了代码。请看一看。然后在这里猜测,是否是分配给两个collectionview的相同布局导致了问题?
let fontsLayout = UICollectionViewFlowLayout()
fontCollection = UICollectionView(frame: frame,collectionViewLayout: fontsLayout)
let colorsLayout = UICollectionViewFlowLayout()
colorsCollection = UICollectionView(frame: frame collectionViewLayout: colorsLayout)