【iOS】カスタムコンテナビューコントローラーを作る

公開日: : iOSアプリ開発

コンテナビューコントローラーは、子となるビューコントローラーを内包できる特殊なビューコントローラーです。例えば、UITabViewControllerやUINavigationControllerなどがそれに当たります。

addChildViewController:メソッドやremoveFromParentViewControllerメソッドなどを使うことによって、カスタムコンテナビューコントローラーを作ることもできます。

スポンサード リンク

前提

今回は、ストーリーボード上で上記のような2つのビューコントローラーを作っておきます。左の赤いビューコントローラーがコンテナ、右の緑のビューコントローラーが追加される子となります。

    

子となるビューコントローラーを名指しでインスタンス化できるように、「GreenViewController」という名前を付けておきます。

    

子となるビューコントローラーを追加する

子となるビューコントローラーを追加するには、

  • addChildViewController:メソッドを読んで、子となるビューコントローラーを追加する
  • addSubview:メソッドを読んで、ビューを追加する
  • didMoveToParentViewController:メソッドを呼ぶ

という手順で処理を行います。以下、そのサンプルコードです。

    UIViewController *greenViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"GreenViewController"];

    [self addChildViewController:greenViewController];
    [self.contentView addSubview:greenViewController.view];
    greenViewController.view.frame = self.contentView.bounds;
    [greenViewController didMoveToParentViewController:self];

    

子のビューコントローラーを削除する

子のビューコントローラーを削除するには、

  • willMoveToParentViewController:メソッドを呼ぶ
  • removeFromSuperviewメソッドを読んで、ビューを削除する
  • removeFromParentViewControllerメソッドを読んで、ビューコントローラーを削除する

という手順で処理を行います。以下、そのサンプルコードです。

    [self.greenViewController willMoveToParentViewController:nil];
    [self.greenViewController.view removeFromSuperview];
    [self.greenViewController removeFromParentViewController];

    

@akio0911はこう思った。

今回解説したカスタムコンテナビューコントローラーを使うと、UISegmentedControllerを使って複数のUIViewControllerを切り替えるようなUIを実現することができます。ぜひ試してみてください!

コンテナビューコントローラーについて更に詳しく知りたい方は、以下の公式ドキュメントを参照してみてください。

関連 : iOS View Controller プログラミングガイド

関連記事

skitched-20120423-100628.jpg

15時間でTwitterアプリ開発を行う初心者向け講座をやります

Photo by Rosaura Ochoa      5/12(土)・19

記事を読む

IMG_6430.png

カレンダー・リマインダーにアクセスしているアプリをiOS 6のプライバシー設定に対応させる方法

     こんにちは。アキオ(@akio0911)です。 アプリからiOSのカレ

記事を読む

no image

検索キーワードにひらがなを入れてみよう

Tweet ども、@akio0911 です。 AppStoreでアプリを検索する時って、ひらが

記事を読む

20140416-192437.jpg

【iPhoneアプリ開発】UINavigationBarに複数のUIBarButtonItemを配置する方法

UINavigationBarの左側や右側に、複数のUIBarButtonItemを配置する

記事を読む

20140527-000424.jpg

CGPoint・CGSize・CGRectをログ出力する際に便利な関数

今日は、iOSアプリ開発でCGPoint・CGSize・CGRectをログ出力する際に便利な

記事を読む

dash-20130802-1818.jpg

【iOSアプリ開発】Dashでドキュメントのページ内を素早く検索する方法があった!

     以前紹介記事を書いた、クラスリファレンスを素早く検索・表示できるMacアプリ

記事を読む

no image

iPhoneシューティング

画面を縦にしてみた。基本的なロジックはそろそろ入れ終わりそう。次はステージの作り込みに入りた

記事を読む

skitched-20120521-122714.jpg

「15時間で覚える Twitterアプリ for iPhone開発講座」2日目 レポート

     こんにちは、アキオ(@akio0911)です。 先日、15時間でTwi

記事を読む

20140304-013828.jpg

UISegmentedControlを使ってUIViewControllerを切り替える方法

先日紹介した「カスタムコンテナビューコントローラーを作る」の応用例として、UISegment

記事を読む

no image

iOS5で搭載された新UI!UIStepper(ステッパー)の使い方

こんにちは。iOS5で追加された新しいAPIをいろいろと試している@akio0911です。

記事を読む

20140714-144729.jpg
サンフランシスコのピア39にあるチャウダーズでクラムチャウダーを食す!

アップルの開発者向けイベント「WWDC2014」に参加するため

slooProImg_20140714064146.jpg
ミスドのカルピスドーナツとカルピスポンデリングを食べてみた!

ミスドで期間限定のカルピスコラボ商品「カルピスドーナツ」と「カルピ

slooProImg_20140713230358.jpg
十三カレー計画で牛すじカレーネギのせを食す!(大阪・十三)

「iPhoneアプリ開発キャンプ@大阪」のランチで、十三カレー計画

slooProImg_20140712085918.jpg
大阪・難波の加寿屋 法善寺でかすうどんを食す。ランチタイムはおにぎり2個まで無料!

大阪・難波の加寿屋 法善寺 (かすうどん KASUYA)で、かす

20140625-114250.jpg
ライブドアブログで運営していた「あきお商店」を「卵は世界である」に改名しました

少し前からライブドアブログで「あきお商店」というブログをやって

→もっと見る

PAGE TOP ↑