プログラミング初心者です。
swift4で書いていますが,異なるview間での値の受け渡しが上手くいきません。
ViewController1に書いたtextをuserdefaultsに保存し、ViewController2のtableViewに表示する..という様に作りたいと考えています。
fruitsという変数の中身を受け渡し、受け渡し先でuserdefaultsのkeyとして使用したいのですが、fruitsの受け渡しが上手くいかず、userdefaultsの読み込み,tableViewの表示ができません。fruitsはView上のUIボタンを押すことで中身が変わります。

//ViewController1
class ViewController1: UIViewController {
  var fruits: String = "apple"
  var Array: [String] = []
..中略..
      @IBAction func apple(_ sender: Any) {
        fruits = "apple"
      }
      @IBAction func banana(_ sender: Any) {
        fruits = "banana"
      }
..中略..
  let data = UserDefaults.standard 
  if let Array = data.stringArray(forKey: fruits ) {
    self.Array = Array
  }
  //保存ボタンを押したらArrayにappendする
  Array.append(myText)
  data.set(Array, forKey: fruits ) 
  data.synchronize()
..中略..
      override func prepare(for segue: UIStoryboardSegue, sender: 
      Any?) {
        if (segue.identifier == "toVC2") {
          let ViewController2 = (segue.destination as? 
          ViewController2)!
          ViewController2.fruits = self.fruits
        }
      }
}

遷移時に変数fruitsの中身がbananaなら、ViewController2に表示するセルにもuserdefaultsのkey:bananaのみ表示する、といったようにしたいと考えています。

//ViewController2
class ViewController2: UIViewController, UITableViewDelegate, 
UITableViewDataSource {
  @IBOutlet weak var tableView: UITableView!
  var Array: [String] = []
  var fruits : String = ""
  override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    readData()
  }
  ..中略..
  func readData() { 
        let data = UserDefaults.standard
        if let Array = data.stringArray(forKey: fruits ) {
            self.Array = Array
    }
    tableView.reloadData() //cellの更新
  }
  ..中略..
  func tableView(_ tableView: UITableView, numberOfRowsInSection 
  section: Int) -> Int {
    return Array.count
  }

  func tableView(_ tableView: UITableView, cellForRowAt indexPath: 
  IndexPath) -> UITableViewCell {

    let cell: UITableViewCell = 
    tableView.dequeueReusableCell(withIdentifier: "Cell", for: 
    indexPath)
    cell.textLabel!.text = Array[indexPath.row]
    return cell
  }
}

質問を見てくださってありがとうございます。
よく分かっていない部分も多いため、変なコードになっているかもしれません。
回答お待ちしています。