Storyboardでページ遷移する場合の値の渡し方

ブログメインビジュアル
こんにちは、エンジニアのきくたにです。
Storyboardでページ遷移を行う場合、次のページに値を渡したいことがあると思います。
そこで今回はページ遷移をする場合の値渡しの方法を見ていきましょう。
(Swift5を使用しています)

目次

1. 完成イメージ

完成イメージはこのような感じです。
テキストフィールドに文字を入力して次へボタンを押すと、
次の画面にいきテキストフィールドに入力した文字がラベルに入ります。
完成イメージ

2. ページ遷移する場合の値の渡し方

それではやっていきましょう

2-1. テキストフィールドと次へボタンを設置する

Main.storyboardにテキストフィールドと次へボタンを設置します。 テキストフィールドと次へボタンを設置する

2-2. コードと紐付ける

テキストフィールドと次へボタンをViewController.swiftと紐付けます。 コードと紐付ける

2-3. 遷移先のページを作成する

Second.storyboardとSecondViewControllerを作成します。
Second.storyboardのクラスにSecondViewControllerを設定します
遷移先のページを作成する

2-4. ラベルを設置する

Second.storyboardにラベルを設置します。 ラベルを設置する

2-5. Storyboard IDを設定する

Second.storyboardのStoryboard IDに「SecondViewController」と設定します。 Storyboard IDを設定する

2-6. コードと紐付ける

テキストラベルをSecondViewController.swiftと紐付けます。 コードと紐付ける

2-7. SecondViewControllerにコードを書く

SecondViewControllerにコードを書きます。
このときmakeInstance関数をつくるのがポイントです。
これをViewControllerから呼び出します。
makeInstance関数の中でtextLabelの値を受け取ります。

import UIKit

class SecondViewController: UIViewController {

    @IBOutlet weak var textLabelView: UILabel!
    private var textLabel: String?

    static func makeInstance(textLabel: String?) -> SecondViewController {
        let storyboard: UIStoryboard = UIStoryboard(name: "Second", bundle: nil)
        let viewController = storyboard.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController
        viewController.textLabel = textLabel
        return viewController
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        textLabelView.text = textLabel
    }
}

2-8. ViewControllerにコードを書く

ViewControllerにコードを書きます。
このときSecondViewControllerのmakeInstance関数を呼び出します。
呼び出す際に引数にtextFieldの値をセットします。

ページ遷移の方法はこちらを見てみてください。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var textFieldView: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func nextButtonDidTap(_ sender: Any) {
        let viewController = SecondViewController.makeInstance(textLabel: textFieldView.text)
        self.present(viewController, animated: true, completion: nil)
    }
}

これで完成です。

3. おわりに

ページ遷移する場合の値の渡し方について説明していきました。
最後まで読んでいただきありがとうございました!

この記事を書いた人 kikutani 2018年12月に中途入社したエンジニアです。最近はiOSを開発しています。
TOP