【问题标题】:Show UITabBar without beeing RootViewController显示 UITabBar 而不使用 RootViewController
【发布时间】:2014-03-04 09:03:55
【问题描述】:

我有一个 LoginViewController,它是 RootViewController。这个 ViewController 不应该包含 TabBar。 ViewController 的其余部分应该包含 UITabBar,但它没有显示。如果我将 tabBar 设为 rootController,它将在 viewcontrollers 中显示 tabBar。这也会使 firsttab 成为它不应该的 rootviewcontroller。

我的问题是,我怎样才能在没有 tabBar 的情况下使 loginview 成为 rootViewController 并且仍然在其他 viewcontrollers 中显示 tabBar?

我的代码:

tabBarController = [[UITabBarController alloc] init];

MenuViewController *firstTab = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:firstTab];


FixtureViewController *secondTab = [[FixtureViewController alloc] initWithNibName:@"FixtureViewController" bundle:nil];
UINavigationController *navController2 = [[UINavigationController alloc] initWithRootViewController:secondTab];

WorldCupViewController *thirdTab = [[WorldCupViewController alloc] initWithNibName:@"WorldCupViewController" bundle:nil];
UINavigationController *navController3 = [[UINavigationController alloc] initWithRootViewController:thirdTab];

LoginViewController *loginView = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
UINavigationController *navController4 = [[UINavigationController alloc] initWithRootViewController:loginView];



self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = @[navController, navController2, navController3];

navController.tabBarItem.image = [UIImage imageNamed:@"message-7"];
navController2.tabBarItem.image = [UIImage imageNamed:@"football-32"];
    navController3.tabBarItem.image = [UIImage imageNamed:@"trophy-32"];
[[UITabBar appearance] setTintColor:[UIColor colorWithRed:110/255.0f green:89/255.0f blue:196/255.0f alpha:1.0f]];

[self.window setRootViewController:navController4];
[self.window makeKeyAndVisible];

【问题讨论】:

  • 用户登录后是否显示 TabBar?
  • 是的,当用户登录时,它将推送到第一个选项卡(MenuViewController)。这个 MenuViewController 不会显示我在 appdelegate 中创建的 uitabbar

标签: ios iphone objective-c


【解决方案1】:

您需要做的是将应用程序从 LoginViewController 转换到 Tabbar。我建议做的是用 TabBar 作为 rootViewController 替换 LoginViewController。

这是一些示例代码,在您的 AppDelegate 中执行此操作

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

     LoginViewController *loginView = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
     UINavigationController *navController4 = [[UINavigationController alloc] initWithRootViewController:loginView];

     [self.window setRootViewController:navController4];
     [self.window makeKeyAndVisible];

     return YES;
}

-(void)transitionToTabBar
{

   // Set the TabBar how you are in your sample code, this is just an example.
   [self.window setRootViewController:[[UITabBarController alloc] initWithNibName:@"SomeNib" bundle:Nil]];

   [UIView transitionWithView:self.window duration:0.5f options:UIViewAnimationOptionTransitionCurlDown animations:^{
      [self.window makeKeyAndVisible];
   } completion:nil];
}

【讨论】:

  • 没错,但现在它将以 menuViewController 作为 rootViewController 而不是 loginviewController
  • @user3258468 不仅在 rootViewController 处设置 LoginViewController。用户登录后,您将向应用程序委托发送一条消息,以使用我向您展示的示例转换到选项卡栏。更新了我的答案。
【解决方案2】:

您应该使用主视图控制器(用于 MenuViewController),并且通过使用 segue,您可以呈现另一个包含 TabBar 的视图控制器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 2018-11-04
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    相关资源
    最近更新 更多