Beginner here. I am developing a simple fixtures app. I have set up a collection view, I am trying to make it so when I click on a cell in the collection view it takes me to the corresponding view controller. Each cell should segue to a different view controller. Here is the code I have tried so far:
import UIKit
class FixturesViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {
let fixturesName = ["EUMHC 1's XI", "EUMHC 2's XI", "EUMHC 3's XI", "EUMHC 4's XI", "EUMHC 5's XI", "EUMHC 6's XI", "EUMHC 7's XI"]
let fixturesLeague = ["Competing in Men's Premiership & Premier North (BUCS)", "Competing in Men's Regional Division 1 & Scottish 1 (BUCS)", "Competing in Men's Regional Division 2 & Scottish 2 (BUCS)", "Competing in Men's East District Division 1 & Scottish 3 (BUCS)", "Competing in Men's East District Division 2 & Scottish 3 (BUCS)", "Competing in Men's East District Division 2 & Scottish 4 (BUCS)", "Competing in Men's East District Division 4"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return fixturesName.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell2", for: indexPath) as! FixturesCollectionViewCell
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath){
}
cell.fixturesName.text = fixturesName[indexPath.row]
cell.fixturesLeague.text = fixturesLeague[indexPath.row]
cell.contentView.layer.cornerRadius = 10.0
cell.layer.cornerRadius = 10.0
cell.contentView.layer.borderWidth = 1.0
cell.contentView.layer.borderColor = UIColor.clear.cgColor
cell.contentView.layer.masksToBounds = true
cell.layer.shadowColor = UIColor.gray.cgColor
cell.layer.shadowOffset = CGSize(width: 0, height: 1.0)
cell.layer.shadowRadius = 4.0
cell.layer.masksToBounds = false
cell.layer.shadowOpacity = 1.0
return cell
}
private func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath){
switch (indexPath.row) {
case 0:
self.performSegue(withIdentifier: "fixtures1", sender: self)
case 1:
self.performSegue(withIdentifier: "fixtures2", sender: self)
default:
break
}
}
}
I've tried to use a switch statement at the bottom (saw this method elsewhere) to perform segues with identifiers depending on the index of the cell.
Is this the right way to approach it?
If you have many segues , then it's better to build this way
self.performSegue(withIdentifier: "fixtures\(indexPath.item + 1)", sender: self)
where segues start with fixtures1
to fixturesN