いつもお世話になります。
下のコードのように、ボタンを押すたびに画面遷移するコードを書きました。そして画面遷移するたびに、AppDelegateのwindowプロパティのsubviewsの数を出力しています。
lang
1import UIKit 2 3class ViewController: UIViewController { 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 // Do any additional setup after loading the view, typically from a nib. 8 9 let button = UIButton(type: .System) 10 button.setTitle("ボタン", forState: .Normal) 11 button.frame.size = CGSize(width: 100, height: 100) 12 button.center = self.view.center 13 button.addTarget(self, action: "buttonAction", forControlEvents: .TouchUpInside) 14 self.view.addSubview(button) 15 } 16 17 override func viewDidAppear(animated: Bool) { 18 super.viewDidAppear(animated) 19 let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 20 print(appDelegate.window?.subviews.count) 21 } 22 23 func buttonAction() { 24 let viewController = ViewController() 25 self.presentViewController(viewController, animated: true, completion: nil) 26 } 27 28 override func didReceiveMemoryWarning() { 29 super.didReceiveMemoryWarning() 30 // Dispose of any resources that can be recreated. 31 } 32 33}
その出力結果を見ると、画面遷移の度にwindowのsubviewsの数が増えているようです。
lang
1//出力結果 2Optional(1) 3Optional(1)//なぜかここは増えない。 4Optional(2) 5Optional(3) 6Optional(4) 7Optional(5) 8Optional(6) 9Optional(7)
これは遷移するたびに、ViewControllerのself.viewを、AppDelegateのwindowプロパティに内部的にaddSubviewしてるような形なのでしょうか?
もし違うのなら、画面遷移するときの仕組みをAppDelegateのwindowとViewControllerのself.viewの関係を絡めなが教えていただけると嬉しいです。
また今回はpresentViewControllerを使って遷移しましたが、これと同じ処理をナビゲーションコントローラを使ってプッシュした場合は、出力結果のsubviewsの数は増えませんでした。こちらの理由についても出来ればでいいので回答していただけると嬉しいです。
注文が多くて申し訳ないのですが、回答よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/28 15:17