CS193p - Lecture 6

iTunes U スタンフォード大学のiOSアプリ開発講義のLecure 6(Multiple MVCs and Segues)の講義メモです。

プロトコルの実装デモ

上下に指を滑らすジェスチャで表情が変わるようにします(口の円弧が変化)。

表情は、モデルのhappinessが具体的な値を持っているので、ジェスチャのハンドリングをView Controllerが行うようにジェスチャ認識を追加します。

これは、つまりView ControllerがView Controllerにジェスチャのハンドリングをdelegateすることになるので、プロトコルを使用してdelegateを実装します。

 

 

View Controller (17:12〜)

View Controllerは、1つのMVCしかハンドリングできないので、複数のMVCをハンドリングするためには、UINavigationControllerを使用する。

UINavigatorControllerは、UIViewContorollerのサブクラスでモデルは持たない。それは、純粋にユーザインタフェイスコントローラだからである。
UINavigatorControllerは、特別なコントローラで、他のMVCへのポインタになるrootViewControllerというアウトレットを持っている。

UINavigatorControllerは、上部にタイトルバーがあり、その下はMVCのViewを表示する領域になっていて、アプリ起動時はrootViewControllerに割り当てられたMVCのViewを表示する。
そのあと、ボタンなどMVCを切り替えるアクションで別のMVCのViewを表示する。
この画面遷移をsegueという。
segueは、常にViewコントローラのインスタンスを作成する。既存のMVCに画面遷移することはなく、一度画面遷移した後に戻ってまた同じMVCに遷移したとしても新たにインスタスが作成される。それは、使用するメモリをなるべく少なくするためにそうなっている。

■コードで遷移先のMVCから戻る方法
    [self.navigationController popViewControllerAnimated:YES];
 ※全てのUIViewControllerは自分を管理しているUINavigationControllerを知っている。
たいていは戻るボタンをタップして戻るのでこの方法はそんなに使わない。これと似た次のようなプロパティもあり、これで現在自分がどこにいるのかを知ることが出来る。
・self.splitViewController
・self.popoverController

■segueの種類

Push - 通常の画面遷移で指定する(画面がスライドして別画面に移動する)
Replace - UISplitViewControllerの右側を置き換える

Popover - ポップオーバーでView Controllerを表示する(iPad only)
Modal - モーダル状態でView Controllerを表示する(他の操作を行えないようにする)

Custom - UIStoryboardSegueのサブクラスを作成する

■動的に画面遷移させる方法
- (IBAction)rentEquipment
{
    if (self.snowTraversingTalent == Skiing) {
        [self performSegueWithIdentifier:@“AskAboutSkis” sender:self];
    } else {
        [self performSegueWithIdentifier:@“AskAboutSnowboard” sender:self];
  }
}

segue(画面遷移)の実装デモ (43:55〜)

storyboard

segue実装手順

コードでsegue ボタンから直接segue
新MVC作成
Identity Inspectorで新MVCのView Controllerにクラスを設定
新MVCにViewを作成
(オブジェクトライブラリからViewを新MVCヘドロップ)
Identity Inspectorで作成したViewにクラスを設定
新MVCのView ControllerにViewのアウトレットを設定
(View Controllerのアイコンをctrlキーを押しながらクリックしてViewに接続してアウトレットを選択)
遷移元のView Controllerのアイコンから新MVCのView Controllerへsegue接続

ボタンから新MVCのView Controllerへsegue接続

prepareForSegueのコードを記述
Navigation Controllerを作成
各MVCのタイトル文字列を入力

■Xcodeの操作

storyboardの表示領域拡大:storyboardの背景をダブルクリック

新MVCの作成:オブジェクトライブラリからView Controllerをドラッグ&ドロップ
segueの接続:ctrlキーを押しながらView Controller/ボタンをドラッグして接続先へ

複数行のラベル:Attributes InspectorでLinesを2以上に設定

Navigation Controllerの作成:初期MVCを選択して、メニューのEditor > Embed In > NavigationController

MVCのタイトル入力:MVCのタイトルバーをダブルクリック

<前の記事 

iTunesで字幕を表示    - CS193p 課題3の内容 次の記事>