【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 プログラミングガイド