如何跳转到iOS开发中另一个UITab下的其他UINavigationController?

Posted

技术标签:

【中文标题】如何跳转到iOS开发中另一个UITab下的其他UINavigationController?【英文标题】:How to jump to other UINavigationController under another UITab in iOS dev? 【发布时间】:2014-09-29 01:47:07 【问题描述】:

我有三个标签,即MessageContactMore。每个选项卡都是一个 UINavigationController。在Contact 选项卡中,我们可以通过添加一些朋友来创建群聊。单击Create 按钮后,视图将导航到Message 选项卡中的新视图控制器。但是,MessageContact 选项卡中的导航控制器是不同的;因为它们是平行的。所以我需要你的帮助,告诉我如何实现这样的功能。

这是我的代码片段,但它不起作用,只返回到 Message 的根视图,而不是 testvc 视图控制器。

- (IBAction)createGroupButtonPressed:(UIButton *)sender 
   UIStoryboard *storyboard = [self storyboard];
   UIViewController *testvc = [storyboard instantiateViewControllerWithIdentifier:@"testvc"];
   UIViewController *messageTab = [storyboard instantiateViewControllerWithIdentifier:@"messageTab"];

   [self.navigationController popToRootViewControllerAnimated:YES];
   [self.tabBarController setSelectedIndex:0];

   [messageTab.navigationController pushViewController:testvc animated:YES];

谢谢。

【问题讨论】:

切换标签到“消息标签”时,延迟1秒推送“testvc”视图控制器。我不知道它是否有效,但先尝试。 @liaogang 如何延迟1秒?你的意思是让线程休眠一秒钟?它会阻止应用程序吗?谢谢。 @liaogang 我尝试使用dispatch_after[messageTab.navigationController pushViewController:testvc animated:YES];延迟1秒,但它不起作用。 你说每个标签都是一个 UINavigationController。那么UIViewController * messageTab 应该是UINavigationController *messageTab? @liaogang 是的。 【参考方案1】:

您的方法有缺陷,因为您正在创建 messageTab 视图控制器的新实例 - 您需要引用现有实例,该实例可从标签栏控制器的 viewControllers 属性中获得 -

- (IBAction)createGroupButtonPressed:(UIButton *)sender 
   UIStoryboard *storyboard = [self storyboard];
   UIViewController *testvc = [storyboard instantiateViewControllerWithIdentifier:@"testvc"];
   UINavigationController *messageTab = self.tabBarController.viewControllers[0];
   [self.navigationController popToRootViewControllerAnimated:YES];
   [self.tabBarController setSelectedIndex:0];
   [messageTab pushViewController:testvc animated:YES];

【讨论】:

不,它不起作用。它只跳转到第一个选项卡的根视图控制器,但底部的选项卡栏消失了。 如果在此方法中设置断点,messageTab 是什么? - 跳过分配它的行后,在调试器中输入“po messageTab”。 打印<UINavigationController: 0x786326c0>。 @Paulw11 所以,这意味着 messageTab 是您的导航控制器 - 试试我更新后的问题中的代码。 还有一件事 - 我认为 testVC 不是 UINavigationController,它只是一个普通的UIViewController 子类?

以上是关于如何跳转到iOS开发中另一个UITab下的其他UINavigationController?的主要内容,如果未能解决你的问题,请参考以下文章

如何从.vue页面跳转到.html的页面?

iOS 10跳转到其他app

安卓开发点击按钮跳转到另一个app

IOS跳转到设置特定项

iOS开发-UI UITabBarController

如何从微信浏览器中跳转到APP指定页面