什么是在所有ViewControllers中保留UITabBar的正确方法(不想使用UITabBarController)

时间:2013-06-14 00:08:21

标签: ios objective-c uitabbar

为了澄清事情,我想要使用UITabBarController。我需要对使用UITabBar无法完成的UITabBarController进行一些自定义更改。 (比如让它滚动等')

这就是我创建UITabBar

的方式
  1. 在Interface Builder中,我拖了UITabBar并将其放在ViewController内。

  2. 连接代表和出口。

  3. 添加了UITabbarItem代码和segue标识符。

  4. 并使用此代码:

    - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
       {
          if (item.tag==0) {
            [self performSegueWithIdentifier:@"Favorite" sender:nil];
          }
          else if (item.tag==1)
          {
             [self performSegueWithIdentifier:@"Item" sender:nil];
          }
       }
    

    我的问题是,当我推送新的ViewControllerUITabBar消失了。 我的问题是,将UITabBar保留在推送的ViewController和其他ViewController上的正确方法是什么?

    我已经尝试使用PrepareForSegue将其传递给下一个视图控制器并且它可以正常工作但是当我回到之前的控制器时,我需要重置UITabBar帧等。我想我可以将它作为一个全局对象保存在我的Singleton中并继续将它添加到新的ViewController中,但这听起来像是一个过度杀戮 有没有更好的方法可以在不使用UITabBarController的情况下完成?

1 个答案:

答案 0 :(得分:1)

即使您不想使用标签栏控制器,您仍应遵循相同的设计模式。您的ScrollableTabBarController应该是容器视图控制器,当选择不同的选项卡项时,它应该将新项目添加为子视图控制器。阅读视图控制器包含文档以获取更多详细信息。

目前听起来你正在推动容器顶部的视图控制器,这表明你的故事板基于导航控制器。这是错误的做法。

我不确定在故事板中做自定义容器控制器是多么简单,(我会在代码中执行)。您可能必须手动建立连接而不是通过segues。