两个标签栏项应显示相同的View Controller

时间:2012-08-13 10:45:29

标签: ios ios5

我想要的是在我的UITabBar中有两个UITabBarItem(这不是问题......)。

通常,第一个项目有自己的UIViewcontroller,第二个项目有自己的UIViewcontroller。 但我希望每个TabBarItem显示相同的UIViewcontroller实例。 (功能几乎相同,这两个视图控制器之间只有一个标签不同)

所以我想我必须在用户推送第二个tabBarItem之后立即将最后一个viewController推到tabBarItemStack之上,对吗?

目前我正在使用带有两个UIViewcontroller的StoaryBoard,所以我真的不知道如何访问TabBarItemStack以及在哪里可以获得用户推送下一个标签的通知?

或者我可以在加载第一个视图后更改堆栈并将当前视图推送到堆栈的第二个索引上吗?

希望我能够解释我的问题所以任何人都能理解; - )

谢谢和问候,

3 个答案:

答案 0 :(得分:2)

在这种情况下我根本不会使用UITabBar。我会在我的viewcontroller中创建一个看起来像两个标签的GUI对象,但实际上只有2个按钮。

当您单击它们时,您可以通过更改按钮的图像来切换它们的外观,使其看起来像您已切换标签。但是你总是一直呆在同一个视图控制器中。而你只需更改其中的内容。

然后,您可以使用成员变量保留用户选择的“选项卡”的跟踪类,以及您知道要显示哪些内容的方式。

当您拥有未知数量的标签并且您不确切知道它们将包含哪些内容时,UITabBar最有用。很多时候,即使你有多个viewcontroller,也不容易使用UITabBar和只有“tab-looking”布局的图像/按钮。

答案 1 :(得分:1)

你有两个UIViewController s(每个UITabBarItem一个),但它们都是从第三个继承(下降)(包含所有逻辑)。这样你就不会复制代码,也不会对层次结构感到不满,这样你就可能会引入错误了?

答案 2 :(得分:0)

在两个TabBar中加载相同的UIViewController。我假设您需要在第一个tabBar中隐藏标签并在第二个tabBar中显示

现在在viewWillAppear方法中添加以下代码:

-(void)viewWillAppear:(BOOL)animated
{
   [super viewWillAppear:animated];
   if(self.tabBarController.selectedIndex == 0) 
   {
      yourLabel.hidden = YES;
   }
   else if(self.tabBarController.selectedIndex == 1) 
   {
      yourLabel.hidden = NO;
   }
}