在导航到另一个viewcontroller之前切换选项卡栏

Fah*_*kar 11 objective-c uitabbarcontroller uiviewcontroller uinavigationcontroller ios

我正在制作一个iOS应用程序,我有Tab栏+侧面菜单.

标签栏有5个项目,侧面菜单有大约12个菜单.

所有侧边菜单功能均来自标签1,侧边菜单可在标签栏中的所有视图中访问.

这意味着如果我在Tab 2上,即使我可以访问侧边菜单.当我单击选项卡1中的侧面菜单项时,我将转到选项卡1,然后将进行导航.

我想要做的是让我们说如果我从侧面菜单点击Complains菜单,我想去ComplainsViewController.

我使用的代码如下.

// go to first tab
self.tabBarController.selectedIndex = 0;
// now navigate
ComplainsViewController *sViewCon = [self.storyboard instantiateViewControllerWithIdentifier:@"Complains"];
CATransition *transition = [CATransition animation];
transition.duration = 0.5;
transition.type = kCATransitionFade;
[self.navigationController.view.layer addAnimation:transition forKey:kCATransition];
[self.navigationController pushViewController:sViewCon animated:NO];
Run Code Online (Sandbox Code Playgroud)

我有两个场景.

场景1(正确)

我在标签1上,点击侧边菜单中的Complains.当我点击时,我使用上面的代码成功地去了ComplainsViewController.

场景2(正确)

我在Tab 2上,点击侧边菜单中的Complains.当我点击时,我成功转到选项卡1,但我没有导航到ComplainsViewController.当我单击返回选项卡2时,我看到在选项卡2中打开ComplainsViewController.

知道如何首先切换到Tab然后导航到另一个viewcontroller?


编辑1

以下是我的基本结构.

在此输入图像描述

Fah*_*kar 3

最后我设法用另一种方式解决了这个问题 NSNotificationCenter

以下是我所做的。

第 1 步(在 SideMenuViewController 中)

// let first go to first index
self.tabBarController.selectedIndex = 0; 
// now post notification and make transition
[[NSNotificationCenter defaultCenter] postNotificationName:@"TakeMeToComplains" object:nil];
Run Code Online (Sandbox Code Playgroud)

第 1 步,将更改 selectedIndex 并发布通知。

步骤 2(在所有其他视图控制器中)

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(globalTakeMeToComplains) name:@"TakeMeToComplains" object:nil];

 -(void)globalTakeMeToComplains {
      // here I have code for Transition to go to ComplainsViewController
 }
Run Code Online (Sandbox Code Playgroud)

在步骤 2 中,当我们切换到第一个选项卡栏时,viewWillAppear 在我正在收听通知的位置被调用。一旦听到通知,我将执行到另一个视图控制器的转换。

如果有人不清楚我在做什么,请告诉我。