从模态视图切换到选项卡视图控制器并保留选项卡

10

你好,我正在尝试从一个模态视图转到一个标签栏视图控制器,但不想失去标签栏?我知道问题很简短,但这就是我想问的。

场景: 我有一个标签栏视图控制器A和B。 B以模态方式呈现C视图控制器。 然后我想返回到视图控制器A。

请用Swift编写 :D


你是从一个以模态方式呈现的视图控制器返回到选项卡栏控制器,还是在以模态方式呈现一个包含在选项卡栏控制器中的视图? - vacawama
是的,选项卡视图控制器然后模态到一个视图控制器,然后返回另一个选项卡视图控制器。 - MasterWizard
在同一个视图控制器中返回到另一个选项卡? - vacawama
另一个选项卡,我已将其添加到编辑中。 - MasterWizard
1个回答

15

这是一个示例,展示如何操作。在我的设置中,从选项卡中选择黄色的ViewController,然后点击Go!会以模态方式呈现白色的 ViewController。点击 Exit 返回到绿色的 ViewController

故事板概述


要设置这个,请使用取消连线(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是您真正想要进入的选项卡的编号。要设置回溯segue,您可以从模态视图控制器中的按钮 control -拖动到viewController顶部的退出图标,然后从弹出窗口中选择backFromModal ... 或者您可以通过从模态viewController顶部的viewController 图标control -拖动到退出图标,并从弹出窗口中选择backFromModal 来设置回溯segue以在程序上调用。 然后,转到文档大纲视图,单击回溯segue 并在右侧的属性检查器中为其指定一个标识符(例如"returnFromModal ")。然后,您可以像这样调用回溯segue:
self.performSegue(withIdentifier: "returnFromModal", sender: self)

完美的答案!它完全做到了我想要做的事情,我不知道"self.tabBarController?.selectedIndex"的存在! - MasterWizard
你如何将数据传递给绿色视图控制器? - Suragch
@Suragch,要将数据从白色视图控制器传递到绿色视图控制器,可以直接解开到绿色视图控制器,并在 'prepare(for:sender:)'期间传递数据。 - vacawama
哦!我一直以为只能直接解开到父级。太好了,我会处理的。 - Suragch
是的。通常只有一个父视图控制器,但您也可以解开任何选项卡视图控制器中的基本级别VC。 - vacawama
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接