StoryboardでChild View Controllerにデータを渡す方法(Xcode 8 & Swift 3)
記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

Storyboardで、Child View Controllerにデータを渡す方法を紹介します!
なお、サンプルアプリはXcode 8とSwift 3を使って作っています。
通常のセグエと同じように、prepare(for:sender:)を使えばデータを渡すことができます。
例えば、以下のようなビューコントローラー構成があったとします。

- StoryboardのContainer Viewを使って、ビューコントローラーにビューコントローラーを埋め込む
- ピンクのビューコントローラー(Parent View Controller)に、ViewController.swiftを割り当てる
- 緑のビューコントローラー(Child View Controller)に、SecondViewController.swiftを割り当てる
まず、Embed Segueのidentifierに”EmbedSegue”と設定しておきます。

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:)に変わっている点は注意が必要ですね!
関連記事
この記事が気に入ったら「いいね!」しよう
Twitterで更新情報をゲット!





