I am learning Swift and currently using two ViewControllers in a project. The first controller initializes data and performs a segue to the second. The second ViewController adds a new value to a variable passed in from the first ViewController. However, when I dismiss the segue and try to update the first one, all IBOutlet properties and variables suddenly become nil. This was derived by logging properties in the updateViewController() method of the firstViewController. Thank you in advance.
First ViewController
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
    // Date Label
    @IBOutlet weak var dateLabel: UILabel!
    // Progress Bar
    @IBOutlet weak var progressBar: UIProgressView?
    // Progress Label
    @IBOutlet weak var progressLabel: UILabel!
    // Button Collection View
    @IBOutlet weak var collectionView: UICollectionView!
    // Current goal button
    @IBOutlet weak var currentGoal: UIButton!
    // Goal label
    @IBOutlet weak var goalLabel: UILabel!
    // Variable Initialization
    // Initialize daily water goal
    var dailyGoal = Float(20)
    // Initialize current progress
    var currentProgress = Float()
    // Water counter variable
    var waterDrank = Float(0)
    var percentageProgress = Float(0.0)
    override func viewDidLoad() {
        super.viewDidLoad()
    progressBar?.setProgress(0.0, animated: false)
        progressBar!.transform = progressBar!.transform.scaledBy(x: 1, y: 3)
    }
    // MARK: - Button & Progress View Logic
    func addProgress(amount: Float) {
        // Add amount to the total amount drank
        waterDrank += amount
        print(waterDrank)
        // Get the current progress in relation to the daily goal
        let currentProgress = waterDrank / dailyGoal
        // Set the new progress to the progressBar
        progressBar?.setProgress(currentProgress, animated: true)
        // Check if progress is below 0
        if (dailyGoal - waterDrank) <= 0.0 {
        // done
        }
        // Check if the daily goal has already been achieved
        if waterDrank >= Float(dailyGoal) {
            // Daily goal has been achieved - show message & abort code
            showAlert(title: "done", message: "!!")
            return
        }
    }
        // MARK: - Segue Action
    // Segue button to second view controller
    @IBAction func changeGoal(_ sender: Any) {
        performSegue(withIdentifier: "currentGoal", sender: self)
    }
    // Save variables
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let secondViewController = segue.destination as! SecondViewController
        secondViewController.dailyGoal = self.dailyGoal
    }
    func updateViewController() {
        // Log new daily goal
        print(dailyGoal)
        // Print progressBar object
        print(waterDrank) // is 0, despite waterDrank having been increased in value before performing segue
        print(progressBar?.progress) // is nil, despite having not been nil before performing segue
    }
}
Second ViewController
    // Current goal label
    @IBOutlet weak var currentGoal: UILabel!
    // Goal picker
    @IBOutlet weak var goalPicker: UIPickerView!
    var dailyGoal = Float()
    let newDailyGoal = [Int()]
    // Initialize current progress
    var currentProgress = Float()
    // Water counter variable
    var waterDrank = Float(0)
    var percentageProgress = Float(0.0)
    override func viewDidLoad() {
        super.viewDidLoad()
    // setting secondViewController as delegate & data source for the UIPicker
    }
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        let vc = ViewController()
        let newDailyGoal = [1500, 1750, 2000, 2250, 2500]
        // Consider row
            switch row {
            case 0:
                self.dailyGoal = Float(newDailyGoal[0])
                vc.dailyGoal = self.dailyGoal
            case 1:
                self.dailyGoal = Float(newDailyGoal[1])
                vc.dailyGoal = self.dailyGoal
            case 2:
                self.dailyGoal = Float(newDailyGoal[2])
                vc.dailyGoal = self.dailyGoal
            case 3:
                self.dailyGoal = Float(newDailyGoal[3])
                vc.dailyGoal = self.dailyGoal
            case 4:
                self.dailyGoal = Float(newDailyGoal[4])
                vc.dailyGoal = self.dailyGoal
            default:
                print("daily goal is default: \(dailyGoal)")
            }
        // Export to ViewController.swift
        return "\(Int(dailyGoal)) ml"
    }
    // MARK: - Save button segue logic
    @IBAction func doneButton(_ sender: Any) {
        dismiss(animated: true, completion: nil)
        let firstViewController = ViewController()
        firstViewController.updateViewController()
    }
}