StoryboardでChild View Controllerにデータを渡す方法(Xcode 8 & Swift 3)

公開日: : iPhoneアプリ開発

20160918-133158.jpg

Storyboardで、Child View Controllerにデータを渡す方法を紹介します!

なお、サンプルアプリはXcode 8とSwift 3を使って作っています。

    

スポンサード リンク

通常のセグエと同じように、prepare(for:sender:)を使えばデータを渡すことができます。

例えば、以下のようなビューコントローラー構成があったとします。

20160918-134117.jpg

  • StoryboardのContainer Viewを使って、ビューコントローラーにビューコントローラーを埋め込む
  • ピンクのビューコントローラー(Parent View Controller)に、ViewController.swiftを割り当てる
  • 緑のビューコントローラー(Child View Controller)に、SecondViewController.swiftを割り当てる

    

まず、Embed Segueのidentifierに”EmbedSegue”と設定しておきます。

20160918-134737.jpg

    

SecondViewController(Child View Controller側)では、外部から受け取ったデータ(textForLabel)をviewDidLoadでラベルに表示するようにしておきます。

class SecondViewController: UIViewController {

    public var textForLabel: String = ""

    @IBOutlet weak var label: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

        label.text = textForLabel
    }
}

    

この時、ViewController(Parent View Controller)側のprepare(for:sender:)に以下のようなコードを書けば、Child View Controller側にデータを渡すことができます。

class ViewController: UIViewController {
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        switch (segue.identifier, segue.destination) {
        case ("EmbedSegue"?, let destination as SecondViewController):
            destination.textForLabel = "Hello world."
        default:
            ()
        }
    }
}

    

@akio0911はこう思った。

通常のセグエと同じやり方でデータを渡せるのは楽でいいですね!

prepareForSegueメソッドの名前がSwift 3だとprepare(for:sender:)に変わっている点は注意が必要ですね!

    

この記事が気に入ったら「いいね!」しよう

follow us in feedly

Feedlyで最新記事を購読

Twitterで更新情報をゲット!

LINEでご感想・ご要望お送りください!
(スマホでLINEを起動 > 友だち追加 > QRコード)

関連記事

20160802-232454.jpg

【Xcode 7】メソッドがどこから呼びだされているかを調べる方法

Xcode 7で、メソッドがどこから呼び出されているのか調べる方法を紹介します!     方法

記事を読む

I20160228-162014.jpg

詳解 Swift 改訂版のKindle版が発売。リフローに対応!

今日気付いたんですが、「詳解 Swift 改訂版」のKindle版がいつの間にか発売されていまし

記事を読む

I20160505-011515.jpg

iOS 9以降で使えるReadable Content Guideを試してみた

iOS 9から追加されたReadable Content Guide(readableConte

記事を読む

I20150808-104713.jpg

【Xcode】シミュレーターリストの表示がおかしくなった時の解決方法

Xcodeのシミュレーターリストの表示が、上のスクリーンショットのようにおかしくなってしまっ

記事を読む

I20160513-010707.jpg

Swiftで計算型プロパティをネストさせてみる

Swiftの計算型プロパティ(Computed property、コンピューテッドプロパティ)を

記事を読む

I20150714-010114.jpg

【Swift】Objective-Cで書いたクラスをメソッド単位で少しずつSwiftへ移行する方法

Objective-Cで作った既存のアプリをSwiftで書き直したいと思っているのですが、一

記事を読む

20141031-150402.jpg

アップルのベータテストサービス「TestFlight」が正式公開

アップルが先週の木曜、ベータテストサービス「TestFlight」を正式に公開しました。 Te

記事を読む

I20160925-163452.jpg

タブバーアイコン非選択時の色を変更する方法【iOS 10】

UITabBarControllerで、タブバーアイコン非選択時の色を変更する方法を紹介します!

記事を読む

20160730-172416.jpg

Auto Layoutで非表示にした部分を詰める(トルツメ)する方法

Auto Layoutを使って非表示にしたコントロールの部分を詰める(トルツメ)方法を説明します

記事を読む

I20160417-171311.jpg

Xcodeのブレークポイントで変数の中身を通知センターに表示してみる

Xcodeのブレークポイントの機能を使って、ブレークポイントを通過した時点での変数の中身を通知セ

記事を読む

PAGE TOP ↑