Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 210 - switchViewsボタン

Swiftで遊ぼう!の古い記事-> Life-LOG OtherSide
2015年5月13日:編集
まだまだ自分でコーディングする能力は無いけど、少しずつ人のコードは読めるようになっています。

      • -

コードの理解が1行ずつという情けない状態ですがゆっくり進みます。

まだ前回のコードは終わってません。

viewDidLoad()メソッド

override func viewDidLoad() {
  super.viewDidLoad()
  blueViewController = 
  storyboard?.instantiateViewControllerWithIdentifier("Blue")
  as? BlueViewController
  blueViewController.view.frame = view.frame
  switchViewController(from: nil, to: blueViewController)
}

注意:キャスティングの扱いが変わったのでオリジナルの「as」から「as?」に変更しました。

最後にあるswitchViewController()メソッドは、ビューコントローラーを切り替えメソッドですが、ユーザー定義のヘルパーメソッドです。今はまだコーディングしないのでこのままにします。

なんとなくアプリを立ち上げるとblueViewControllerが立ち上がります。

じゃあオレンジのビューはどうなんでしょう?

アプリを立ち上げた時にオレンジ色のビューはいりません。switchViewsボタンを押すまでオレンジ色は存在しなくてもいいわけです。もしかしたらボタンも押さずアプリを終了させてしまえばオレンジ色のビューは全く必要なかったことになりインスタンス化していたらメモリーの無駄になります。

ボタンを押した時にオレンジ色のビューがインスタンス化するので、レイジー(Lazy)ローディングと呼ぶ呼びます。←Lazy propertyの考え方と同じですね。

ボタンのコードを見ます。

@IBAction func switchViews(sender: UIBarButtonItem) {
 if orangeViewController?.view.superview == nil {
   if orangeViewController == nil {
     orangeViewController = 
     storyboard?.instantiateViewControllerWithIdentifier("Orange")
     as? OrangeViewController
    }
  } else if blueViewController?.view.superview == nil {
   if blueViewController == nil {
     blueViewController =
     storyboard?.instantiateViewControllerWithIdentifier("Blue")
     as? BlueViewController
    }
  }
        
 if blueViewController != nil
   && blueViewController!.view.superview != nil {
  orangeViewController.view.frame = view.frame
  switchViewController(from: blueViewController,
  to: orangeViewController)
 } else {
  blueViewController.view.frame = view.frame
  switchViewController(from: orangeViewController,
  to: blueViewController)
 }
}

注意:キャスティングの扱いが変わったのでオリジナルの「as」から「as?」に変更しました。

いきなり圧倒されました(^_^;)

やっぱりiOSのビューシステムが分かっていないので、Apple Developerサイトで見つけた日本語の「iOS View プログラミングガイド」を読むことにした...

このように私のプログラミングの学習は紆余曲折... さてアプリはいつになるやら。

今日はこれでおしまいです。

この続きは5月17日からです。