Main.storyBoard上で2つのViewControllerを作りました。それぞれのカスタムクラスはViewControllerAとViewControllerBで、またStoryBoardIDもそれぞれViewControllerAとViewControllerBです。
そしてViewControllerAのviewDidLoadメソッドからViewControllerBのインスタンスにアクセスしたいと思い、下のようなコードを書きました。
lang
1//ViewControllerAクラス 2class ViewControllerA: UIViewController { 3 4 override func viewDidLoad() { 5 super.viewDidLoad() 6 7 var storyBoard = UIStoryboard(name: "Main", bundle: nil) 8 var secondViewController = storyBoard.instantiateViewControllerWithIdentifier("ViewControllerB") as! ViewControllerB 9 secondViewController.sample = "Hi" 10 } 11} 12 13//ViewControllerBクラス 14class ViewControllerB: UIViewController { 15 16 var sample:String? 17 18 override func viewDidLoad() { 19 super.viewDidLoad() 20 21 println(sample) 22 } 23}
期待した結果は、ViewControllerBが表示されたときに、コンソールに”Hi”と表示するというものでした。しかしnilが出力されていしまします。つまりViewControllerBインスタンスをうまく取得できてないようです。
画面遷移時に
lang
1 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 2 if (segue.identifier == "segue") { 3 var secondViewController = segue.destinationViewController as! ViewControllerB 4 secondViewController.sample = "Hi" 5 } 6 }
のようにしてViewControllerBのインスタンスにアクセスするのもありなのですが、自由なタイミングでViewControllerBのインスタンスを取得したいです。どうすればいいでしょうか?回答よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/13 05:46