I pretty doubt that what is different between value by using prepare func
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (segue.identifier == "MainToTimer") {
        let vc = segue.destination as! YourViewController
        vc.var_name = "Your Data"
    }
}
or declare global variable for example
in VC1
var justsimpleint:Int! = 0 //out side class
viewdidload(){
 justsimpleint = justsimpleint + 2
}
in VC2
viewdidload(){
print(justsimpleint)   // it will be 2
}
 
     
     
    