iOS 5中的自定义容器视图控制器需要addSubView来添加子控制器吗?

时间:2012-07-25 22:21:38

标签: ios5 uiviewcontroller

我有1个视图控制器充当CustomViewContainer,它有2个子视图控制器,最初只在启动时添加了1个。

从子容器上的Container调用addChildViewController,然后在子容器上随后调用didMoveToParentViewController不会在屏幕上显示我的子视图。相反,我仍然看到父控制器的视图。

@implementation ContainerViewController // inherits from UIViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    LOG_METHOD_SIG();    
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])
    {
        // ChildViewController is a subclass of UIViewController
        _childController = [[ChildViewController alloc] initWithNibName:nil bundle:nil];
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self addChildViewController:_childController];

    // Expected the following line to display the child controller's view
    [_childController didMoveToParentViewController:self];
}

如果我在[self.view addSubview:_childController.view]之后添加'addChildViewController',则会显示该视图。但我认为容器视图控制器的重点是避免直接操作。

如果您要添加第一个子视图控制器,可以调用'transitionFromViewController`,如果是,那么'from'视图控制器会是什么?

1 个答案:

答案 0 :(得分:0)

addChildViewController就是这样:它添加了一个子视图控制器。它的观点没有任何作用。 transitionFromViewController:toViewController:duration:options:animation:completion(或其他......)是神奇发生的地方。你的fromViewController可能是你最初添加的视图控制器,toViewController是你的第二个视图控制器。