我一直在尝试从UITabBarController隐藏/删除UITabBar。我的iPhone版本中有一个UITabBar,但我已将导航移至iPad版本的新视图控制器。新菜单使用UITabBarDelegate方法在UIViewControllers之间切换。
到现在为止还挺好。
现在我需要隐藏某种方式的UITabBar。
我有一个自定义的UITabBarController,我尝试仅使用self.tabBar.hidden = YES;。
但我需要视图填充屏幕。
谢谢
最佳答案
因此,您有一些选择。假设您的标签视图是导航控制器。在这种情况下,您可以有一个临时的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;
}