



prepareForSegue関数を作成して、このViewController からセグウェイで遷移する途中で 遷移先のUIViewController の変数に渡す情報を代入します。 この段階では遷移先のUIViewControllerではUIView をスーパークラスに持つインスタンスはまだ用意されていないので、 アクセスしても nil であることに注意しましょう。代入などしてはいけません(下の例では実行時エラーになる例をコメントにしてあります)。 下の例では、prepareForSegue ではpassedString というString型の変数に代入しており、 遷移先の ViewController2 の viewDidLoad 関数内で myLabel というUILabel! 型変数の text フィールドに代入しています。
| ViewController.swiftに追加するコード(マゼンダ色の文字の部分) |
import UIKit
class ViewController: UIViewController {
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "SegueToVC2" {
let controller:ViewController2 = segue.destinationViewController as! ViewController2
// controller.myLabel?.text = "passed String" // error
controller.passedString = "passed String"
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
|
| ViewController2.swiftに追加するコード(マゼンダ色の文字の部分) |
import UIKit
class ViewController2: UIViewController {
var passedString: String?
@IBOutlet weak var myLabel: UILabel!
@IBAction func tapBack(sender: AnyObject) {
dismissViewControllerAnimated(true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
if passedString != nil {
myLabel.text = passedString
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
|
| --> |
|