从模态视图切换到标签栏视图控制器并且不会丢失标签栏

Posted

技术标签:

【中文标题】从模态视图切换到标签栏视图控制器并且不会丢失标签栏【英文标题】:Segue from modal view to tab bar view controller and not lose tab bar 【发布时间】:2015-09-08 14:08:38 【问题描述】:

你好,我想在不丢失标签栏的情况下从模式切换到标签栏视图控制器?我知道这个问题很简短,但这就是我要问的全部内容。

场景:我有一个选项卡栏视图控制器,A 和 B。B 模式到 C 视图控制器。然后我想回到View Controller A。

请斯威夫特:D

【问题讨论】:

您是从模态显示的 viewController 返回到选项卡栏控制器,还是模态显示包含在选项卡栏控制器中的视图? 是的,标签栏视图控制器然后模态到视图控制器,然后返回到另一个标签栏视图控制器 回到同一个viewController的另一个标签页? 另一个标签,我添加到编辑中 【参考方案1】:

这是我如何做到这一点的示例。在我的设置中,我从选项卡中选择 yellow ViewController,然后按 Go! 以模态显示 white ViewController。按下 Exit 返回到 绿色的 ViewController


要进行此设置,请使用 unwind segue 返回调用您的 viewController。例如,在选项卡的第一个 ViewController(调用模态 segue 的那个)中实现它。

@IBAction func backFromModal(_ segue: UIStoryboardSegue) 
    print("and we are back")
    // Switch to the second tab (tabs are numbered 0, 1, 2)
    self.tabBarController?.selectedIndex = 1

然后使用self.tabBarController?.selectedIndex = n 切换到另一个选项卡,其中n 是您真正想要转到的选项卡的编号。要设置展开转场,您可以 control-从模态视图控制器中的按钮拖动到视图控制器顶部的 exit 图标,然后选择 backFromModal从弹出窗口...


您可以通过 control 将展开转场设置为以编程方式调用 - 从模态视图控制器顶部的 viewController 图标拖动到 exit 图标,然后从弹出窗口中选择backFromModal

然后,转到 Document Outline View 并点击 unwind segue

并在右侧的 Attributes Inspector 中为其指定一个标识符(例如"returnFromModal")。

然后你会像这样调用 unwind segue

self.performSegue(withIdentifier: "returnFromModal", sender: self)

【讨论】:

完美答案!它完全符合我的要求,我不知道“self.tabBarController?.selectedIndex”是否存在! 如何将数据传递给绿色视图控制器? @Suragch,将数据从白色传递到绿色视图控制器,可以直接展开到绿色视图控制器并在prepare(for:sender:)期间传递数据。 哦!我以为我只能直接向父母放松。那太棒了。我会努力的。 是的。通常它只是一个父级,但您也可以在选项卡视图控制器中展开到任何基本级别的 VC。

以上是关于从模态视图切换到标签栏视图控制器并且不会丢失标签栏的主要内容,如果未能解决你的问题,请参考以下文章

如何从标签栏视图控制器切换到另一个作为导航控制器子视图的视图

切换视图时标签栏丢失

从标签栏控制器模态显示视图

从模态视图关闭的标签栏项目中删除选择图像

切换到横向视图并使用标签栏控制器

以编程方式从模态视图控制器切换父选项卡