ios UIViewController层级关系

- (void)setSelectedIndex:(NSUInteger)selectedIndex {
    if ([self selectedViewController]) {
        [[self selectedViewController] willMoveToParentViewController:nil];
        [[[self selectedViewController] view] removeFromSuperview];
        [[self selectedViewController] removeFromParentViewController];
    }
    
    _selectedIndex = selectedIndex;
    [[self tabBar] setSelectedItem:[[self tabBar] items][selectedIndex]];
    
    [self setSelectedViewController:[[self viewControllers] objectAtIndex:selectedIndex]];
    [self addChildViewController:[self selectedViewController]];
    [[[self selectedViewController] view] setFrame:[[self contentView] bounds]];
    [[self contentView] addSubview:[[self selectedViewController] view]];
    [[self selectedViewController] didMoveToParentViewController:self];
}
//当一个视图控制器从视图控制器容器中被添加或者被删除之前,该方法被调用
UIViewController willMoveToParentViewController:
UIViewController removeFromParentViewController
UIViewController addChildViewController
UIViewController didMoveToParentViewController:

猜你喜欢

转载自geniuswxk.iteye.com/blog/2184883