StoryBoardで貼り付けたViewControllerと、コーディングで作成したViewControllerを親子にしたときの、loadViewとviewDidLoadの関係についです。
import UIKit class ViewController: UIViewController { override func loadView() { super.loadView() println("loadView") } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. println("viewDidLoad") view.backgroundColor = UIColor.brownColor() var viewController2 = ViewController2() viewController2.view.backgroundColor = UIColor.blueColor() viewController2.view.layer.bounds = CGRectMake(0, 0, 100, 100) self.addChildViewController(viewController2) view.addSubview(viewController2.view) viewController2.didMoveToParentViewController(self) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
import UIKit class ViewController2: UIViewController { override func loadView() { println("loadView2") super.loadView() } override func viewDidLoad() { println("viewDidLoad2") } }
実行すると次のように表示されます。
コンソールには、
loadView viewDidLoad loadView2 viewDidLoad2
と出力されます。
しかし、ViewController.swiftの赤いところを消して、ViewController2のviewに触れないと、
loadView viewDidLoad
のように、ViewController2のview関係のメソッドが動作しません。うまくできてますね。
最近のコメント