title: How to pass data between view controllers - not working
body: <p>Im trying to pass an player score from VC1 to a view that displays the current scores of all players(4).  the display view is on a separate view controller than where the player(s) score is defined and stored.</p>
  
  <p>I have done the prepare(segue) and im able to pass other variables to the display VC(ThirdViewController). but when I try to assign the player score to the uilabel.text It tells me that I have unwrapped a nil value</p>
  
  <p>I have even tried to just set the label text to a static string and still get the nil error.</p>
  
  <pre><code>class ViewController: UIViewController {
  
  var name = String()
  
  var player1Score = 1
  var player2Score = 2
  var player3Score = 3
  var player4Score = 4
  
  //MARK: ********* IBOutlets **********
  @IBOutlet weak var playerSegmentOutlet: UISegmentedControl!
  @IBOutlet weak var diceSegmentOutlet: UISegmentedControl!
  @IBOutlet weak var targetScoreSliderOutlet: UISlider!
  @IBOutlet weak var matchTargetSwitchOutlet: UISwitch!
  @IBOutlet weak var targetScoreLabel: UILabel!
  
  
  override func viewDidLoad() {
      super.viewDidLoad()
  
  }
  
  
  override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  
      if let VC = segue.destination as? SecondViewController {
  
          VC.player1CurrentScore = player1Score
          VC.player2CurrentScore = player2Score
          VC.player3CurrentScore = player3Score
          VC.player4CurrentScore = player4Score
      }
  }
  </code></pre>
  
  <p>Second view Controller</p>
  
  <pre><code>class SecondViewController: UIViewController {
  
  @IBOutlet weak var CurrentRoundScoreLabel: UILabel!
  
  @IBOutlet weak var CurrentPlayerScoreLabel: UILabel!
  
  var player1CurrentScore = 1
  var player2CurrentScore = 1
  var player3CurrentScore = 1
  var player4CurrentScore = 1
  
  
  override func viewDidLoad() {
      super.viewDidLoad()
  
  }
  
  override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
      if let VC = segue.destination as? ThirdViewController {
  
          VC.player1ScoreLabel.text = String(player1CurrentScore)
          VC.player2ScoreLabel.text = String(player2CurrentScore)
          VC.player3ScoreLabel.text = String(player3CurrentScore)
          VC.player4ScoreLabel.text = String(player4CurrentScore)
  
      }
  }
  </code></pre>
  
  <p>Third View Controller</p>
  
  <pre><code>class ThirdViewController: UIViewController {
  
  @IBOutlet var player1ScoreLabel: UILabel!
  @IBOutlet var player2ScoreLabel: UILabel!
  @IBOutlet var player3ScoreLabel: UILabel!
  @IBOutlet var player4ScoreLabel: UILabel!
  
  override func viewDidLoad() {
      super.viewDidLoad()
  }
  </code></pre>
  
  <p>}</p>
  
  <p>no matter what I try to do with with UILabel.text it shows up as nil</p>
  
  <p>I'm totally frustrated and I'm sure I am missing something simple because of my frustration, please someone help me.</p>