Swiftで遊ぼう!の古い記事-> Life-LOG OtherSide
質問 : Swiftで遊ぼう! - 252 - FaceViewプロジェクト始動 - Swiftで遊ぼう! on Hatena

Beginning iPhone Development with Swift: Exploring the iOS SDK

Beginning iPhone Development with Swift: Exploring the iOS SDK

  • 作者: David Mark,Jack Nutting,Kim Topley,Fredrik Olsson,Jeff LaMarche
  • 出版社/メーカー: Apress
  • 発売日: 2014/11/19
  • メディア: Kindle版
  • この商品を含むブログを見る

SwitchingViewControllerのコーディングが完成しても、BlueViewControllerやOrangeViewControllerがまだどこにも存在しないので、ラン(Cmd + R)させるとエラーに陥ります。

まずBlueViewControllerクラスのコーディングから始めましょう。

BlueViewContoroller.swiftにすべてコーディングすることでコンテンツビューを作ることもできます。しかし、Xcode開発環境下にそんなことをする人はほとんどいないでしょう。ジェネリックなUIViewControllerをオブジェクト・ライブラリからストーリーボードにドラッグ&ドロップします。

当然、ストーリーボード上のジェネリックなUIViewControllerにコードを関連付ける必要性があります。もう何度も説明しているやり方です。UIViewControllerを選択してアイデンティティ・インスペクタを開いて、Classから「BlueViewController」を選択するだけです。

そしてもう1つ気をつけなければならないポイントがあります。UIViewControllerを区別する識別子として「Identity」を設定しないと判断できなくなります。Segue(セグエ)でも同じ注意が必要です*1。Class名の下にIdentityのStoryboard IDに「Blue」とタイプします。

ドキュメント・アウトラインを見ます。

f:id:yataiblue:20150516140323j:plain

もう既にUIButtonオブジェクトをオブジェクト・ライブラリからドラッグ&ドロップしていますが、UIViewControllerオブジェクトをオブジェクト・ライブラリからドラッグ&ドロップすると、そのルートビューは自動的に組み込まれています。

コードでUIViewControllerオブジェクトを書く方法と違うところです。コードで書く場合は、自分でUIViewもコードする必要があります。オブジェクト・ライブラリからジェネリックなオブジェクトをストーリーボードに並べる便利さがここにあります。

ただ、オブジェクトをドラッグ&ドロップした場合、どういうオブジェクトが組み込まれるのか知っておく必要はあります。

ドキュメント・アウトラインからViewを選んで、アトリビュート・インスペクタのBackgroundカラーを青い色にします。

UIButtonオブジェクトもViewの上にドラッグ&ドロップします。名前を適当に変えて色も見やすいように変更してから、中央でコンストレイントを設定します。

これでジェネリックなオブジェクトは完成しました。

次は制御をするためにBlueViewControllerに繋げていきます。

ルートビューは何もする必要がないので、すべて綺麗さっぱり消してしまって、ルートビュー上に置いたボタンから「Ctrl + ドラッグ」して@IBActionボタンを作ります。

class BlueViewController: UIViewController {
    
@IBAction func blueButtonPressed(sender: UIButton) {
 let alert = UIAlertController(title: "ブルービューのボタンが押されました",
              message: "ブルービューのボタンを君は押したよ",
               preferredStyle: .Alert)
 let action = UIAlertAction(title: "そう押したよ",
               style: .Default, handler: nil)
 alert.addAction(action)
 presentViewController(alert, animated: true, completion: nil)
 }

}

このボタンメソッドのコードですが、これはMy Third Projectを勉強していたアクション・コントロールの復習です。今になって振り返ってみるとUIAlertActionControllerとUIAlertActionの関係性は、UIViewControllerとUIViewの関係と似ていますね。

yataiblue.hatenablog.com

同じようにOrangeViewControllerを用意します。

じゃあラン(Cmd + R)します。

f:id:yataiblue:20150516162101j:plain

今日はここまで。

*1:Segueの場合は、IdentityではなくIdentifierになります。