コードで画面遷移を呼び出した場合
swift
1performSegueWithIdentifier("Result", sender: "渡す値")
以下のメソッドはStoryboard上で結んだSegueが呼ばれた場合 or コードでperformSegueWithIdentifierを呼び出した場合に呼ばれます
swift
1
2override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
3 // segue.identifierは『Result』です。
4 // 第二引数のsenderは"渡す値"です
5
6}
第一引数のUIStoryboardSegueの定義は以下の様になっています。※コメントは省略
swift
1public class UIStoryboardSegue : NSObject {
2
3 @available(iOS 6.0, *)
4 public convenience init(identifier: String?, source: UIViewController, destination: UIViewController, performHandler: () -> Void)
5
6 public init(identifier: String?, source: UIViewController, destination: UIViewController)
7
8 public var identifier: String? { get }
9 public var sourceViewController: UIViewController { get }
10 public var destinationViewController: UIViewController { get }
11 public func perform()
12}
13
ここで質問であるdestinationViewControllerが出てきました。
これは呼び出した次の画面のUIViewControllerを指しています。※getなので取得のみ
ただしUIViewControllerなので呼び出したクラスにキャストしないとそのクラスのプロパティにアクセスできないので以下の様な処理をしています。
swift
1
2override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
3 print(sender)
4
5 // 呼び出したidentifierによって遷移先画面への処理を分ける
6 if segue.identifier == "Result" {
7 let viewController = segue.destinationViewController as! ResultViewController
8 // キャストしたのでResultViewControllerのプロパティにアクセスできる
9 viewController.property = XXX
10 }
11}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/03 01:37 編集
2016/04/03 01:49
2016/04/03 03:34