title: Swift 4: prepare(for segue:) being called after viewDidLoad
body: <p>I have 2 VCs: <strong>CouponVC</strong> and <strong>CouponFeedbackVC</strong>.</p>
  
  <p>Coupon VC receives <strong>brand: Brand!</strong> from its parentViewController.
  Now I want to pass the <strong>brand.name</strong> to <strong>CouponFeedbackVC</strong>.</p>
  
  <p>CouponVC.swift</p>
  
  <pre><code>var brandName: String!
  override func viewDidLoad() {
      super.viewDidLoad
      brandName = brand.name
  }
  
  override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
      if segue.identifier == "couponToFeedBack" {
          if let vc = segue.destination as? CouponFeedbackVC {
              print(brandName)
              vc.brandName = self.brandName
          }
      }
  }
  </code></pre>
  
  <p>In CouponFeedbackVC.swift</p>
  
  <pre><code>var brandName: String!
  override func viewDidLoad() {
      super.viewDidLoad()
      print("viewDidLoad")
      print(brandName)
  }
  
   override func awakeFromNib() {
      print(brandName)
      self.view.layoutIfNeeded()
  }
  </code></pre>
  
  <p>Console Log</p>
  
  <pre><code>nil
  viewDidLoad
  nil
  StayUncle
  </code></pre>
  
  <p>awakeFromNib() -> viewDidLoad() -> prepare(for segue:)</p>
  
  <p>I am not accessing any outlets from CouponFeedbackVC.</p>
  
  <p>Why is <strong>prepare(for segue: )</strong> being called after <strong>viewDidLoad()</strong> and <strong>awakeFromNib()</strong>?</p>