0

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

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

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

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

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

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

谢谢并恭祝安康,

4

3 回答 3

2

在这种情况下,我根本不会使用 UITabBar。我会在我的视图控制器中创建一些 GUI 对象,看起来像两个选项卡,但实际上只有 2 个按钮。

当您单击它们时,您会通过更改按钮的图像来切换它们的外观,以便看起来您已经切换了选项卡。但是你总是停留在同一个视图控制器中。您只需更改其中的内容。

然后,您可以通过使用成员变量来跟踪用户选择的“选项卡”类,这样您就知道要显示哪些内容。

当您有未知数量的选项卡并且您不确切知道它们将包含什么时,UITabBar 最有用。很多时候,不使用 UITabBar 和仅使用具有“选项卡式”布局的图像/按钮会容易得多,即使您有多个视图控制器也是如此。

于 2012-08-13T11:35:40.517 回答
1

你能有两个UIViewControllers (每个一个UITabBarItem),但它们都是从第三个(包含所有逻辑)继承(后裔)的。这样您就不会复制代码,也不会对层次结构感到厌烦,这样您可能会引入错误?

于 2012-08-13T10:54:17.043 回答
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;
   }
}
于 2012-08-13T10:54:07.067 回答