2017-08-01 119 views
2

我想将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 

     } 
    } 

当我运行该项目,无论是收集的意见都出现苹果画面和细胞计数的代码是10

有人可以帮我解决这个问题...

回答

0

因为你的病情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 

     } 
} 
0

如果你得到相同的数据为UICollectionView这意味着你使用相同的DataSource。 为每个UICollectionView 定义一个单独的DataSource并且您应该对委托执行相同的操作,除非您需要为两者执行相同的操作。

1

的问题是在if语句:

它应该是这样的:

if collectionView == self.DashBoardMainSection1CollectionViewOutlet{ 
    //code 
} 

有了这个代码,你检查经过的collectionView该参数是第一个collectionView

使用您的原始代码,您正在创建一个名为collectionView的新常量,并将其分配给您的第一个collectionView

1

请同时使用标签管理collectionview。给viewDidLoad方法或storyboard上的collectionview标签。现在基于标签创建条件。

例子: -

DashBoardMainSection1CollectionViewOutlet.tag = 1 
DashBoardMainSection2CollectionViewOutlet.tag = 2 

if collectionView.tag == 1 { 
    return 10 
} else { 
    return 5 
} 
+0

'DashBoardMainSection1CollectionViewOutlet.tag'将始终保持1,所以你如果块将始终返回true – Krunal

+1

更新你的答案与'如果collectionView.tag == 1' – Krunal

+0

你是对的。 @Krunal。 – shahnilay86

相关问题