【问题标题】:How to get tabBarController in one of its viewController when using storyboard?使用情节提要时如何在其视图控制器之一中获取 tabBarController?
【发布时间】:2014-02-11 04:19:26
【问题描述】:

我使用故事板模板制作了一个选项卡式应用程序,嵌入了两个视图控制器。

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

第一个viewController是一个tableViewController,展示了一个item列表,每个item都会推送到一个detailViewController。在 detailViewController 中,我编辑了一些信息并保存了该项。然后我想让应用显示第二个 ViewController,这是一个 tableViewController 显示保存的项目。

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

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

这让我很困惑......

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

【问题讨论】:

  • 你想说什么...?
  • 你在哪里打电话self.tabBarController
  • @Honghao Zhang - 如果你使用 storyboard 那么你不需要通过代码维护 viewcontroller 层次结构 - 只需学习 xcode 中提供的 tabbar 控制器模板代码 - 你就会明白

标签: ios iphone objective-c ios7 uitabbarcontroller


【解决方案1】:

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

首先我添加一个新类:MyTabBarController

然后,在 storyboard 中,选择 Tab Bar Controller,在 identity inspector 面板中,将 custom class 设置为这个新类。

为第一个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 给了我一个可视化的界面,然而,它隐藏了很多东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 2019-12-04
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    相关资源
    最近更新 更多