我正在尝试将2个集合视图合并到同一视图中。我实现了所有内容,并注意到第二个集合视图中加载的数据与第一个集合视图相同。
这是我正在尝试的代码
class DashBoardMainSection1CollectionViewCellClass: UICollectionViewCell
{
@IBOutlet weak var DashBoardMainSection1CollectionViewImageListingViewOutlet : UIImageView!
@IBOutlet weak var DashBoardMainSection1CollectionViewLabelOutlet : UILabel!
}
class DashBoardMainSection2CollectionViewCellClass: UICollectionViewCell
{
@IBOutlet weak var DashBoardMainSection2CollectionViewImageListingViewOutlet : UIImageView!
@IBOutlet weak var DashBoardMainSection2CollectionViewLabelOutlet : UILabel!
}
private let reuseIdentifierDashBoardMainSection1Cell = "dashBoardMainSection1CollectionViewCellIdentifier"
private let reuseIdentifierDashBoardMainSection2Cell = "dashBoardMainSection2CollectionViewCellIdentifier"
class DashBoardViewControllerMain: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout
{
@IBOutlet weak var DashBoardMainSection1CollectionViewOutlet : UICollectionView!
@IBOutlet weak var DashBoardMainSection2CollectionViewOutlet : UICollectionView!
override func viewDidLoad()
{
super.viewDidLoad()
DashBoardMainSection1CollectionViewOutlet.delegate = self;
DashBoardMainSection2CollectionViewOutlet.delegate = self;
DashBoardMainSection1CollectionViewOutlet.dataSource = self;
DashBoardMainSection2CollectionViewOutlet.dataSource = self;
// Do any additional setup after loading the view.
}
func numberOfSections(in collectionView: UICollectionView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of items
var count:Int?
if (self.DashBoardMainSection1CollectionViewOutlet) != nil{
count = 10
}
//if (self.DashBoardMainSection2CollectionViewOutlet) != nil{
else{
count = 5
}
return count!
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if let collectionView = self.DashBoardMainSection1CollectionViewOutlet{
let cell:DashBoardMainSection1CollectionViewCellClass = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifierDashBoardMainSection1Cell, for: indexPath) as! DashBoardMainSection1CollectionViewCellClass
cell.DashBoardMainSection1CollectionViewImageListingViewOutlet.image = UIImage(named:"Apple.png")
cell.DashBoardMainSection1CollectionViewLabelOutlet.text = "FIRST"
return cell
}
else{
let cell2:DashBoardMainSection2CollectionViewCellClass = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifierDashBoardMainSection2Cell, for: indexPath) as! DashBoardMainSection2CollectionViewCellClass
cell2.DashBoardMainSection2CollectionViewImageListingViewOutlet.image = UIImage(named:"Logo-Disabled.png")
cell2.DashBoardMainSection2CollectionViewLabelOutlet.text = "SECOND"
return cell2
}
}
当我运行项目时,两个集合视图都显示Apple图片,单元格数为10。
有人可以帮我解决这个问题吗?
最佳答案
因为您的条件if (self.DashBoardMainSection1CollectionViewOutlet) != nil
始终返回true,所以每次仅执行if
块的代码。
试试这个:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of items
var count = 0
if (collectionView == self.DashBoardMainSection1CollectionViewOutlet) {
count = 10
}
// if (collectionView == self.DashBoardMainSection2CollectionViewOutlet)
else {
count = 5
}
return count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if (collectionView == self.DashBoardMainSection1CollectionViewOutlet){
let cell:DashBoardMainSection1CollectionViewCellClass = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifierDashBoardMainSection1Cell, for: indexPath) as! DashBoardMainSection1CollectionViewCellClass
cell.DashBoardMainSection1CollectionViewImageListingViewOutlet.image = UIImage(named:"Apple.png")
cell.DashBoardMainSection1CollectionViewLabelOutlet.text = "FIRST"
return cell
}
else{
let cell2:DashBoardMainSection2CollectionViewCellClass = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifierDashBoardMainSection2Cell, for: indexPath) as! DashBoardMainSection2CollectionViewCellClass
cell2.DashBoardMainSection2CollectionViewImageListingViewOutlet.image = UIImage(named:"Logo-Disabled.png")
cell2.DashBoardMainSection2CollectionViewLabelOutlet.text = "SECOND"
return cell2
}
}