从 UIViewController 过渡到 TabBarViewController

Posted

技术标签:

【中文标题】从 UIViewController 过渡到 TabBarViewController【英文标题】:Transition from UIViewController to TabBarViewController 【发布时间】:2016-04-10 11:05:18 【问题描述】:

我已经搜索了 6 个小时的解决方案,但没有找到适合我情况的解决方案。我的故事板遵循以下流程:

TabBarViewController -> NavigationController ->TableViewController -> UIViewController(见下图)

当单击最后一个视图控制器(陌生人视图控制器)中的“通知”按钮时,我想以编程方式从该视图控制器(陌生人视图控制器)转换/切换到 TabBarViewController 的另一个子项(它是图中标题为“环顾四周”的控制器)。

每次我执行传统的转场:

    选项 + 从陌生人视图控制器拖动 segue --> 环顾四周 视图控制器 给 segue 一个标识符 以编程方式使用 self.performSegueWithIdentifier。

我得到一个过渡。但是故事板中的“环顾四周”标签栏消失了,在模拟器中,一旦我点击“通知”,视图就会变为“环顾四周”视图,但下面的标签栏并没有反映这种变化,因为它仍然突出显示上一个选项卡。

我已经处理了 IBAction 函数中需要处理的所有其他处理。一旦用户点击“通知”,这只是正确地将用户发送到不同视图的问题。

对此的任何指导将不胜感激。

如果您对我有任何问题或疑虑,请随时提出。我是新手,愿意接受任何帮助。

【问题讨论】:

要让标签栏反映更改,您需要以编程方式对其进行更改 【参考方案1】:

ViewController 是 NavigationBar 的子节点,而 NavigationBarController 是 TabBarController 的子节点。所以不需要 Segue,因为它会扰乱流程。

以编程方式尝试

@IBAction func notifyButtonTapped(sender: AnyObject) 
        tabBarController?.selectedIndex = 1
        tabBarController?.tabBar.hidden = false
        self.navigationController?.popToRootViewControllerAnimated(false)
    

【讨论】:

这绝对成功了!非常感谢你的帮助。除了研究这段代码之外,我认为我需要找到一个关于转换的可靠教程,以及何时以及何时不使用 segues。 还研究了包含——视图控制器的父子关系。

以上是关于从 UIViewController 过渡到 TabBarViewController的主要内容,如果未能解决你的问题,请参考以下文章

UIViewController 过渡在下拉手势关闭时闪烁

如何完成交互式 UIViewController 过渡?

为啥 [UIViewController presentModalViewController:animated:] 从左侧过渡模态视图?

同时 UIViewController 过渡动画

过渡到已经包含的 UIViewController

带有旋转的自定义 UIViewController 过渡