Ios 以编程方式而不是按用户在UITabBarController上切换视图时的不同操作?

Ios 以编程方式而不是按用户在UITabBarController上切换视图时的不同操作?,ios,uitabbarcontroller,Ios,Uitabbarcontroller,我有一个包含5个独立视图(5个选项卡)的选项卡导航应用程序。 除了:在一种情况下,我想通过编程从一个视图(选项卡)切换到另一个视图(选项卡) 切换工作正常,但我也希望通过编程方式切换来传递参数,因此目标视图的外观将与用户按tab键激活的视图不同 有没有合适的方法来实现这一点(除了定义全局变量;)?我的应用程序委托中有挂钩来帮助实现这一点。我在代码中就是这样做的(请注意,每个选项卡内都有一个UINavigationController): 使用协议和委托而不是全局变量,基本上这就是我想要的:我不需

我有一个包含5个独立视图(5个选项卡)的选项卡导航应用程序。 除了:在一种情况下,我想通过编程从一个视图(选项卡)切换到另一个视图(选项卡)

切换工作正常,但我也希望通过编程方式切换来传递参数,因此目标视图的外观将与用户按tab键激活的视图不同


有没有合适的方法来实现这一点(除了定义全局变量;)?

我的应用程序委托中有挂钩来帮助实现这一点。我在代码中就是这样做的(请注意,每个选项卡内都有一个UINavigationController):


使用协议和委托而不是全局变量,基本上这就是我想要的:我不需要事件转换,我只需要在激活ViewController类之前访问它。
SLAppDelegate *delegate = (SLAppDelegate *)[[UIApplication sharedApplication] delegate];

UIView * fromView = delegate.tabController.selectedViewController.view;
UIView * toView = [[delegate.tabController.viewControllers objectAtIndex:3] view];

[UIView transitionFromView:fromView
                            toView:toView
                          duration:0.5
                           options: UIViewAnimationOptionTransitionFlipFromRight
                        completion:^(BOOL finished) {
                            if (finished) {
                                delegate.tabController.selectedIndex = 3;

                                MapViewController *map = (MapViewController *)[delegate.navMapsController.viewControllers objectAtIndex:0]; // map view is the only VC in the navController 
                                // do something with the map view 
                            }
                        }];