我一直试图从UITabBarController隐藏/删除UITabBar。我的iPhone版本中有一个UITabBar,但我已将导航移动到iPad版本的新视图控制器。新菜单使用UITabBarDelegate方法在UIViewControllers之间切换。
到目前为止一切顺利。
我现在需要的是以某种方式隐藏UITabBar。
我有一个自定义的UITabBarController,我尝试过简单地使用self.tabBar.hidden = YES; 但我需要视图填满屏幕。
谢谢
答案 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)];
}
}