【Swift】画面遷移しながら値を渡す方法2

完成図

 

f:id:nekokichi_yos2:20181023021133p:plain
f:id:nekokichi_yos2:20181023021136p:plain

 

解説

 

・前回の記事では、performSegueとprepareによる画面遷移を実装した

nekokichi2yos2.hatenablog.com

nekokichi2yos2.hatenablog.com

・今回は、performSegueとprepareを使わずに画面遷移を行う

 

・self.storyboard?.instantiateViewControllerで遷移先のインスタンスを取得

インスタンス.変数 = 値、で値を渡す

・self.navigationController?.pushViewControllerで遷移

 

※注意点

・今回の遷移は、遷移元がNavigationControllerを継承している必要がある

・遷移先のViewControllerのStoryBoardID と withIdentifierを一致させる必要がある

 

ストーリーボード

 

f:id:nekokichi_yos2:20181023021315p:plain

 

ソースコード

 

import UIKit

class ViewController: UIViewController {
    
    @IBOutlet weak var textField: UITextField!

    @IBAction func button(_ sender: Any) {
        
        //遷移先のインスタンス
        //ユーティリティエリアで設定したStoryBoardIDをwithIdentifierに設定
        let vc2 = self.storyboard?.instantiateViewController(withIdentifier: "next") as! ViewController2
        
        //ViewController2のtextにtextFieldのテキストを代入
        vc2.text = textField.text!
        
        //NavigationControllerを継承したViewControllerを遷移
        self.navigationController?.pushViewController(vc2, animated: true)
        
    }
    
}

 

 

import UIKit

class ViewController2: UIViewController {
    
    @IBOutlet weak var label: UILabel!
    
    var text = String()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        label.text = text
        
    }

}