使用storyboard时如何在其viewController中获取tabBarController?

时间:2014-02-11 04:19:26

标签: ios iphone objective-c ios7 uitabbarcontroller

我使用情节提要模板制作标签式应用,嵌入了两个视图控制器。

这就是我想要做的:在第一个viewController中,让TabBar以编程方式选择第二个viewController。

第一个viewController是一个tableViewController,显示了一个项目列表,每个项目都将推送到detailViewController。在detailViewController中,我编辑一些信息并保存项目。然后我希望app显示第二个ViewController,这是一个tableViewController显示已保存的项目。

通常,我们可以使用[TabBarController setSelectedIndex:1];来选择第二个viewController。

但是,由于这是一个故事板模板应用程序,因此隐藏了很多代码。所以我无法在第一个viewController中获取TabBar实例,并使用 setSelectedIndex 方法。

这让我感到困惑......

现在,我找到了解决这个问题的方法。我的答案如下。

1 个答案:

答案 0 :(得分:2)

我已经想出如何解决这个问题。

首先我添加一个新类: MyTabBarController

然后,在 storyboard 中,选择标签栏控制器,在标识检查器面板中,将自定义类设置为此新类。< / p>

对于第一个viewController类,添加一个属性

@property (nonatomic, weak) UITabBarController *tabBarController;

然后在MyTabBarController类中添加- (void)viewDidAppear:(BOOL)animated

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    UINavigationController *navigationController = [self.viewControllers objectAtIndex:0];
    FirstViewController *firstViewController = (FirstViewController *)navigationController.topViewController;
    firstViewController.tabBarController = self;

通过这种方式,我将tabBarController实例传递给firstViewController,因此,在firstViewController中,我可以调用[tabBarController setSelectedIndex:1];

Storyboard为我提供了一个可视化界面,然而,它隐藏了很多东西。