从窗口层次结构中删除导航或标签栏控制器

时间:2011-04-28 09:27:10

标签: iphone

在某些时候我需要一个tabBar控制器而不是导航控制器。为此,我发布了导航控制器并在窗口中添加了一个标签栏。

是否从窗口层次结构中删除了UINavigationcontroller?

1 个答案:

答案 0 :(得分:3)

我知道您想要从导航控制器切换到TabBar控制器并返回,但您担心一旦删除,您将无法取回它。

显而易见的解决方案不是删除它们,而是隐藏它们。以下是TabBar控制器的示例,它只是将y点从431设置为480,因此它会离开视图并返回。

- (void) hidetabbar:(BOOL)hiddenTabBar {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.5];
    for(UIView *view in self.uiTabBarController.view.subviews){
        if([view isKindOfClass:[UITabBar class]]) {
            if (hiddenTabBar) {
                [view setFrame:CGRectMake(view.frame.origin.x, 431, view.frame.size.width, view.frame.size.height)];
            } else {
                [view setFrame:CGRectMake(view.frame.origin.x, 480, view.frame.size.width, view.frame.size.height)];
            }
        } else {
            if (hiddenTabBar) {
                [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 431)];
            } else {
                [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 480)];
            }
        }
    }
    [UIView commitAnimations];  
}

您可以对导航控制器执行完全相同的操作。