UINavigation Controllerを追加した時にroot View Controllerも一緒についてきてびっくりしたと思います。
これは削除できます。
自分が追加したいUIViewControllerのShow the connection inspectorにおいて、Presenting Segues内のRelationshipの+からCtrlを押しながら矢印をUINavigationControllerまで伸ばすと、変更できます。
UINavigationControllerを使う時は、私はデータ数が多くなければUserDefaultsを利用するのがいいのではないかと思います。
そのままで保存できないデータを使っているのであれば、多く見かけるtopViewControllerに値を退避させて必要なところで読み込むのがいいと思います。
下記サンプルは、UserDefaultsを使う例です。
(参考)UserDefaultsの使い方
ViewControllerがroot View Controllerで、そこからNextViewControllerに画面遷移します。
NextViewControllerでテキストボックスにデータを入力して保存ボタンを押します。
この保存ボタンのアクションがsave(_:)メソッドです。
そこで渡したいデータをUserDefaultsに保存します。
ViewControllerに戻ったら、viewWillAppear(_:)メソッドで、UserDefaultsから読み込みます。
ここで注意が必要なのは、一番最初に起動した時は初めて表示されたときにもviewWillAppear(_:)メソッドが呼ばれ、その時にはUserDefaultsにデータが無いということです。
その場合は、nilの時なのでその場合の為にnilにも対応しておきましょう。
ViewController.swift
class ViewController: UIViewController { //データを表示するラベル @IBOutlet weak var lblDestination: UILabel! //アプリ固有のデータを保存できる記憶領域 let ud = UserDefaults.standard override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } //このビューが表示される時に呼び出されるメソッド override func viewWillAppear(_ animated: Bool) { self.lblDestination.text = self.ud.string(forKey: "myData") ?? "" } }
NextViewController.swift
class NextViewController: UIViewController { //受け渡すデータを入力するテキストボックス @IBOutlet weak var txtSource: UITextField! //アプリ固有のデータを保存できる記憶領域 let ud = UserDefaults.standard override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } //保存ボタンを押した時に呼ばれるメソッド @IBAction func save(_ sender: Any) { accessUserDefaults(read: false) } //UserDefaultsにアクセスする時に呼び出すメソッド func accessUserDefaults(read: Bool) { if read { self.txtSource.text = self.ud.string(forKey: "myData") ?? "" } else { self.ud.set(self.txtSource.text, forKey: "myData") } } }