第二个UITabBar

时间:2014-07-17 13:41:11

标签: ios uitabbar

我已经找了一个小时来解决我的问题。 一张图片可以说出千言万语:

second tabbar

我的ViewController中有两个TabBars。我用故事板创建的第一个,它的工作原理。现在我想让第二个选择连接类型。因为每种连接类型都有一些自己需要填写的东西。我只是将一个新的UITabTab拖放到我的ViewController中,添加了第三个TabBar项目,但我不知道接下来会发生什么。如何处理第二个TabBar。我需要什么方法?如何抓住这个项目,所以我可以改变观点?

1 个答案:

答案 0 :(得分:1)

您使用的是UITabBarViewController还是UIViewController?我怀疑第一种是这种情况,你不知道如何将两个相同的一个连接到一个ViewController。你需要做的是拆开UITabBar的委托方法,这样你就可以在同一个控制器中完成两次。

您应该执行以下操作:

  • 使用常规UIViewController
  • 将两个UITabBar拖到视图
  • 将它们连接到ViewController
  • 在不同的类中为每个UITabBar创建两个UITabBarDelegate实现
  • 在viewDidLoad或类似事件中创建这些类的实例,并将每个UITabBar的“委托”设置为该实例

一些示例代码

首先在顶部为栏创建一个新类。它只需做一件事:

#import "LVDTopTabDelegate.h"

@implementation LVDTopTabDelegate

// This is the only required part of the delegate
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;
{
    // Handle what you wanted to do
}

@end

第二个或多或少相同

#import "LVDBottomTabDelegate.h"

@implementation LVDBottomTabDelegate

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;
{
    // Handle what you wanted to do
}

@end

你的viewDidLoad应该看起来像这样:

@implementation LVDViewController

- (void)viewDidLoad;
{
    LVDTopTabDelegate *topTabDelegate = [[LVDTopTabDelegate alloc] init];
    self.topTabBar.delegate = topTabDelegate; // self.topTabBar is an IBOutlet for your tab bar

    LVDBottomTabDelegate *topTabDelegate = [[LVDBottomTabDelegate alloc] init];
    self.bottomTabBar.delegate = bottomTabDelegate;
}

@end