微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

原文地址:https://www.jb51.cc/iOS/330680.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐