SwiftにてprepareForSegueを使った画面遷移時の値の受け渡しの解説

welcomeToXcode

Sponsored Link


segueを使った値の受け渡しを解説します。
・準備としては画面遷移を行うのでViewControllerを二つ用意してそれぞれクラスを持たせたStoryBoardを作成します。
・次にNavigationControllerでViewControllerを内包させます。

 

スクリーンショット 2015-02-04 11.47.49

 

するとNavigationControllerにViewControllerが内包される形になりますのでNavigationControllerに内包されたViewControllerと(ここでは遷移先をSecondViewControllerとします)SecondViewControllerを繋ぎます。

 

スクリーンショット 2015-02-04 11.50.58

 

 

ここまでできたらコードで使う識別子の設定(Identifier)の設定を行います。

 

スクリーンショット 2015-02-04 11.43.47

 

 

私は”segue”にしました。
Storyboardはこれで準備できましたのでコードを書いていきます。

ViewContoroller(渡したい値を持つView)

 

//
//  ViewController.swift
//  Segue for param
//
//  Created by tarou yamasaki on 2015/02/04.
//  Copyright (c) 2015年 tarou yamasaki. All rights reserved.
//

import UIKit

class ViewController: UIViewController {
    
    /// 画面遷移時に渡す為の値
    var _param:String = "segue OK"
    
    /**
        インスタンス化された直後(初回一度のみ)
        viewDidLoad
    */
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    /**
        memoryWarning
    */
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    /**
        画面遷移ボタン
    */
    @IBAction func _myButton(sender: AnyObject) {
        performSegueWithIdentifier("segue",sender: nil)
    }
    /**
        画面遷移時に値を遷移先に渡す
    */
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
        if (segue.identifier == "segue") {
            // SecondViewControllerクラスをインスタンス化してsegue(画面遷移)で値を渡せるようにバンドルする
            var secondView : SecondViewController = segue.destinationViewController as SecondViewController
            // secondView(バンドルされた変数)に受け取り用の変数を引数とし_paramを渡す(_paramには渡したい値)
            // この時SecondViewControllerにて受け取る同型の変数を用意しておかないとエラーになる
            secondView._second = _param
        }
    }
}

 

SecondViewController(受けたい値のView)

 

//
//  SecondViewController.swift
//  Segue for param
//
//  Created by tarou yamasaki on 2015/02/04.
//  Copyright (c) 2015年 tarou yamasaki. All rights reserved.
//

import UIKit

class SecondViewController: UIViewController {

    /// ラベルをアウトプット接続
    @IBOutlet weak var _myLabel: UILabel!
    
    /// 遷移時の受け取り用の変数
    var _second:String = ""
    
    /**
        インスタンス化された直後(初回に一度のみ)
        viewDiDLoad
    */
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // ラベルに受け取った遷移用の変数を渡す
        _myLabel.text = _second
    }

    /**
        memoryWarnig
    */
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

 

一応コードの写真も載せときます

 

スクリーンショット 2015-02-04 11.57.07

 

書いてないのはボタンとラベルぐらいです。

 

 

Sponsored Link
ツイートツイート

SwiftにてprepareForSegueを使った画面遷移時の値の受け渡しの解説

One thought on “SwiftにてprepareForSegueを使った画面遷移時の値の受け渡しの解説

  • 2016年10月14日 at 20:04
    Permalink

    大変参考になりました。
    質問ですが、second画面からかmain画面に戻る時の値の受け渡しは、どのように設定すれば良いのでしょうか。

    幼稚な質問で申し訳ありません。

    Reply

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です