我正在制作一个iOS应用程序,我有Tab栏Side Menu.
全方位菜单功能来自Tab 1&侧面菜单可以在标签栏中的所有视图中访问.
这意味着如果我在标签2,即使我可以访问侧面菜单.当我点击标签1中的侧面菜单项时,我将转到标签1,然后导航.
我想做的是让我们说如果我从侧面菜单点击投诉菜单,我想去投诉视图控制器.
我使用的代码如下.
// 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];
我有两个场景
情景1(正确)
我在标签1上,点击侧边菜单中的抱怨.当我点击时,我使用上面的代码成功地使用了ComplainsViewController.
情景2(正确)
我在标签2上,点击侧边菜单中的抱怨.当我点击,我成功地到Tab 1,但我不导航到ComplainsViewController.当我点击回到标签2,我看到投诉控件在标签2中打开.
任何想法如何首先切换到Tab然后导航到另一个viewcontroller?
编辑1
以下是我的基本结构.
解决方法
看起来你在切换标签后忘记切换导航控制器.
尝试实现UITabBarControllerDelegate方法:
尝试实现UITabBarControllerDelegate方法:
- (void)tabBarController:(UITabBarController * _Nonnull)tabBarController didSelectViewController:(UIViewController * _Nonnull)viewController { self.currentNavigationController = (UINavigationController *)viewController; }
// go to first tab self.tabBarController.selectedIndex = 0; // Manually call delegate method [self tabBarController:self.tabBarController didSelectViewController:self.tabBarController.selectedViewController]; // now navigate ComplainsViewController *sViewCon = [self.storyboard instantiateViewControllerWithIdentifier:@"Complains"]; CATransition *transition = [CATransition animation]; transition.duration = 0.5; transition.type = kCATransitionFade; [self.currentNavigationController.view.layer addAnimation:transition forKey:kCATransition]; [self.currentNavigationController pushViewController:sViewCon animated:NO];
为了实现这一目标,您需要创建新的属性来保持currentNavigationController.