1

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

到目前为止,一切都很好。

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

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

谢谢

4

2 回答 2

3

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

- (BOOL) hidesBottomBarWhenPushed { return YES; }

如果这对您不起作用,那么您可以使用 window.rootViewController 玩游戏。在启动时,您创建您的 viewController 并将其设置为 rootViewController。稍后,当您想要一个标签栏时,您可以向 appDelegate 发送消息以创建一个 tabBarController 并使您的视图成为第一个视图控制器(原样!)。我刚刚使用 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;
}
于 2012-07-18T14:55:02.780 回答
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)];
        }

    }
于 2012-07-18T14:57:39.800 回答