Javaな日々

NO JAVA, NO LIFE.

コンテナViewControllerを実装してみる

iOS5から実装された機能,コンテナViewControllerを使って,View Controllerの中にView Controllerを配置したい時のメモ.

例として今回はTab Bar ControllerをView Controllerの上に配置してみます.

環境

手順

  1. Storyboardを使ってTab Bar Controllerを配置します.

    f:id:yksris:20121027051611p:plain


  2. 配置したTab Bar ControllerのStoryboard IDをインスペクタから“ContainerTabBarController”とします.また,SizeはFreeFormにしておきます.

    f:id:yksris:20121027054525p:plain


  3. コンテナViewControllerを配置するView ControllerにViewを配置します.これは後にコンテナViewControllerを配置するスペースになります.

  4. 3. で配置したViewをViewControllerクラスのヘッダに関連付けます.

    #import <UIKit/UIKit.h>
    
    @interface ViewController : UIViewController
    @property (weak, nonatomic) IBOutlet UIView *ContainerViewControllerSpace;
    
    @end
    


  5. 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