コンテナViewControllerを実装してみる
iOS5から実装された機能,コンテナViewControllerを使って,View Controllerの中にView Controllerを配置したい時のメモ.
例として今回はTab Bar ControllerをView Controllerの上に配置してみます.
手順
- Storyboardを使ってTab Bar Controllerを配置します.
- 配置したTab Bar ControllerのStoryboard IDをインスペクタから“ContainerTabBarController”とします.また,SizeはFreeFormにしておきます.
- コンテナViewControllerを配置するView ControllerにViewを配置します.これは後にコンテナViewControllerを配置するスペースになります.
- 3. で配置したViewをViewControllerクラスのヘッダに関連付けます.
#import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UIView *ContainerViewControllerSpace; @end
- ViewController.mのviewDidLoadを以下のように処理を追加.
#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UITabBarController *menuViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ContainerTabBarController"]; [self addChildViewController:menuViewController]; [menuViewController didMoveToParentViewController:self]; [_ContainerViewControllerSpace addSubview:menuViewController.view]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end