Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.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 具有不同单元格数的viewController中的多个集合视图_Ios_Swift_Uicollectionview - Fatal编程技术网

Ios 具有不同单元格数的viewController中的多个集合视图

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

似乎有一个类似的问题,但它并没有解决我的问题

我在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.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)