我使用情节提要模板制作标签式应用,嵌入了两个视图控制器。
这就是我想要做的:在第一个viewController中,让TabBar以编程方式选择第二个viewController。
第一个viewController是一个tableViewController,显示了一个项目列表,每个项目都将推送到detailViewController。在detailViewController中,我编辑一些信息并保存项目。然后我希望app显示第二个ViewController,这是一个tableViewController显示已保存的项目。
通常,我们可以使用[TabBarController setSelectedIndex:1];
来选择第二个viewController。
但是,由于这是一个故事板模板应用程序,因此隐藏了很多代码。所以我无法在第一个viewController中获取TabBar实例,并使用 setSelectedIndex 方法。
这让我感到困惑......
现在,我找到了解决这个问题的方法。我的答案如下。
答案 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为我提供了一个可视化界面,然而,它隐藏了很多东西。