我正在尝试将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

        }
}

10-08 06:27