プログラミングの魔物

エラー、バグ、仕様変更と戦うブログ

iOSのインターフェース

iPhone/iPad/iPod touchプログラミングバイブル4章

MVCアーキテクチャ

iOSアプリはMVCで構成されている。

  • モデル(Model)
    アプリで処理するデータ
  • ビュー(View)
    モデルの内容を表示したり、ユーザーからの操作を受け取る
  • コントローラー(Controller)
    モデルとビューをつなぐもの

ここではモデルについて「アプリで処理するデータ」と書かれているが、アプリと切り離して再利用可能な機能があればそれはモデルの仕事となる(簡単なもので言えばソートや検索など)
モデルとビューは互いのクラス名を知らなくてもコントローラーを介してやり取りが出来る。

モデルを抽象的なデータとしてインターフェースのみビューに公開すれば、コントローラーがモデルの要素を一つ一つビューに公開する手間も省けるし、モデルとビューも互いの実装を知る必要はない。
Objective-Cならプロトコルでやり取りする)
データ構造を切り替える際も「同じプロトコルを実装したモデル」に切り替えるだけで済むので便利。

コントローラはMediatorに近い役割を果たす。

ViewControllerの作成

  • ViewControllerのソースを作る際に「With XIB for user interface」にチェックを入れることでxibファイルを同時に生成。

4-10まではInterfaceBuilderを使わずに作るらしい。

4-1〜4-9まで以下のソースコードが解説されている。

  • ラベルとイメージビュー
  • ボタンとアラート
    ボタンはデザインを選べる。角丸矩形、詳細、iマーク(白)、iマーク(黒)、コンタクト追加
  • テキストフィールド
  • テキストビュー
  • スライダーとスイッチ
  • WEBビュー
  • マップビュー
  • ナビゲーションとテーブルビュー
  • ピッカービュー

InterfaceBuilder

本には載っていなかったが、以下の方法で作ると一番コードを書かずに済む。

  1. xib上でビューの中にコンポーネントを配置
  2. ビューコントローラーのヘッダをダブルクリックして別ウィンドウで開く
  3. ビューに貼りつけたコンポーネントをCtrl+ドラッグしながら@interface内にドロップ
    ({}の中に入れるとインスタンス変数、外にドロップするとプロパティになる)

ソースからコンポーネントを作る場合

  • 動的に配置することができる。
  • 部品の再利用がしやすくなる。

InterfaceBuilderでコンポーネントを作る場合

  • 視覚的に配置できる。
  • コーディングの量が減る。

プロジェクトによって使い分けるといい。

参考

iPhone/iPad/iPod touch プログラミングバイブル iOS 6/Xcode 4対応 (smart phone programming bible)

iPhone/iPad/iPod touch プログラミングバイブル iOS 6/Xcode 4対応 (smart phone programming bible)