迅速,选择从标签栏控制器中拆分视图控制器

时间:2018-08-20 15:33:22

标签: ios swift xcode

在此之前,我要说我是Swift和IOS开发的新手。

我当前正在尝试从选项卡栏视图返回到作为拆分视图控制器的根视图控制器的segue。 enter image description here

从下面的图片中,我想选择“取消”按钮并返回到我的根视图控制器,该控制器是一个拆分的enter image description here视图控制器

下面是我设置的情节提要segue

enter image description here

下面是我正在使用的代码。

@IBAction func cancelButton(_ sender: Any) {
    performSegue(withIdentifier: "submit", sender: nil)

}

当我最初启动我的应用程序并开始使用它时。一切正常。 如下所示,当从左侧选择一个项目时,正确的数据将填充在详细视图中。

enter image description here

首次按下时,即使侧面推动菜单也可以正常工作,如下所示。 enter image description here

但是,这是当我在侧面菜单中选择“提交邮件”选项并试图返回到rootview时,该应用开始崩溃的原因。

如下图所示,当我返回segue时,从主视图中选择一个项目时,不再在详细视图中填充数据。

enter image description here

此外,打开侧边菜单时现在全屏显示。

enter image description here

为什么会这样? 还要注意一点,我在侧面推动菜单中使用了Cocoapod SideMenu。

谢谢!

2 个答案:

答案 0 :(得分:1)

Segues用于将控制器推入导航层次结构,而不是像您尝试的那样向后推。您应该将导航层次结构视为树形结构,其中控制器之间几乎没有任何循环关系。您可以从层次结构中添加和删除控制器,以进行“前进”和“后退”。在您的方案中实际发生的情况是,将根控制器的新实例推送到导航堆栈上,而该实例尚未以原始根控制器具有的状态进行初始化。尽管可以使用一种特殊类型的segue(称为unwind segues)来“后退”,但我不建议这样做,因为它们连接起来很复杂,并且编写的代码不明确其功能。

相反,您可以将UIViewController.dismiss与委托模式结合使用以实现所需的功能。

答案 1 :(得分:0)

要从tabBarController返回,我只需设置一个展开键:

在根视图控制器中声明展开(在func中不需要代码)

img-{musclenamehere}

将将触发返回的按钮连接到tabBarController的退出按钮,然后选择unwindToRootViewController