没有UITabBar的UITabBarController

时间:2012-07-18 14:42:14

标签: ios uitabbarcontroller customization uitabbar

我一直试图从UITabBarController隐藏/删除UITabBar。我的iPhone版本中有一个UITabBar,但我已将导航移动到iPad版本的新视图控制器。新菜单使用UITabBarDelegate方法在UIViewControllers之间切换。

到目前为止一切顺利。

我现在需要的是以某种方式隐藏UITabBar。

我有一个自定义的UITabBarController,我尝试过简单地使用self.tabBar.hidden = YES; 但我需要视图填满屏幕。

谢谢

2 个答案:

答案 0 :(得分:3)

所以你有几个选择。假设您的标签视图是导航控制器。在这种情况下,您可以拥有一个临时的viewController,它立即推送您想要使用的“真正的”viewController,而“真正的”viewController具有以下实现的方法。稍后,通过重置navigationControllers viewControllers数组,您可以摆脱临时控制器。

- (BOOL) hidesBottomBarWhenPushed { return YES; }

如果这对您不起作用,那么您可以使用window.rootViewController玩游戏。在启动时,您将创建viewController并使其成为rootViewController。稍后,当您需要标签栏时,您可以回复appDelegate以创建tabBarController并使您的视图成为第一个viewController(原样!)。我刚刚使用Xcode Tab Bar项目在一个简单的演示应用程序中验证了这一点。这是我使用的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];

    self.window.rootViewController = viewController1;
    [self.window makeKeyAndVisible];
    return YES;
}

- (void)switcher
{
    [viewController1.view removeFromSuperview];
    UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];
    self.window.rootViewController = self.tabBarController;
}

答案 1 :(得分:2)

我找到了我正在寻找的答案

希望这对其他人有帮助

for(UIView *view in self.view.subviews)
    {
        if([view isKindOfClass:[UITabBar class]])
        {
            [view setFrame:CGRectMake(view.frame.origin.x, self.view.frame.size.height+49, view.frame.size.width, view.frame.size.height)];
        } 
        else 
        {
            [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, self.view.frame.size.height)];
        }

    }