ios – 切换标签栏,然后导航到另一个视图控制器

前端之家收集整理的这篇文章主要介绍了ios – 切换标签栏,然后导航到另一个视图控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在制作一个iOS应用程序,我有Tab栏Side Menu.

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

全方位菜单功能来自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方法
- (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.

猜你在找的iOS相关文章