Passing values between multiple view controller : I am newbie in Swift so probably asking a dumb question...


I have a UICellViewController in which I have following method

     override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath)
            print("tapped got at index: \(indexPath.row) with tag: \(cell.tag) ")
             //var viewController = CalculatorViewController()
            //storyboard?.instantiateViewController(withIdentifier: "A")
            
            if indexPath.row == cellLabels.count - 1{
                 let viewController = VC1()
                viewController.selection = cellLabels[indexPath.row]
                self.navigationController?.pushViewController(viewController, animated: true)
                
            }
            else{
                let viewController = VC2()
                viewController.selection = cellLabels[indexPath.row]
                self.navigationController?.pushViewController(viewController, animated: true)
                
            }
            
            
            
        }

Essentially, I have two viewcontroller classes VC1 and VC2 of type ViewController
and based on which cell is clicked, I want to present the right view.
So, that is the intention..

Now in each of these classes VC1 and VC2, I have a UILabel (selection) which I am also trying to set above.

But when I try to run the class.. the code compiles and runs..
it crashes where I am trying to set the label 

    self.label.text = selection //Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value


What am I doing wrong? 
What's the right way to achieve this?
Thanks
