首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift,segue to split View Controller与Tab Bar Controller

Swift,segue to split View Controller与Tab Bar Controller
EN

Stack Overflow用户
提问于 2018-08-20 23:33:22
回答 2查看 303关注 0票数 0

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

我目前正在尝试执行从选项卡栏视图返回到根视图控制器的分割,这是一个拆分视图控制器。

从下面的图片中,我想选择'cancel‘按钮并返回到我的根视图控制器,这是一个拆分

视图控制器

下面是我设置的序列图像板片段

下面是我使用的代码。

代码语言:javascript
复制
@IBAction func cancelButton(_ sender: Any) {
    performSegue(withIdentifier: "submit", sender: nil)

}

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

即使侧推菜单在第一次打开时也能正常工作,如下所示。

然而,正是当我在侧边菜单中选择“提交邮件”选项,并试图返回到带有段的根视图时,应用程序开始崩溃。

如下所示,当我带着段返回时,我已经设置了当从主视图中选择一个项目时,不再填充细节视图中的数据。

此外,侧推菜单现在在打开时是全屏的。

为什么会发生这种情况有什么原因吗?作为进一步的说明,我使用了Cocoapod的SideMenu作为侧推菜单。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-21 01:37:32

Segues用于将控制器推到导航层次结构上,而不是像您试图做的那样倒退。您应该将导航层次结构视为树结构,其中控制器之间很少有任何循环关系。您可以在层次结构中添加和删除控制器,以“向前”和“向后”。在您的场景中实际发生的情况是,您的根控制器的一个新实例被推送到导航堆栈上,该实例尚未使用原始根控制器具有的状态进行初始化。虽然可以使用一种特殊类型的段,称为展开segues来“倒退”,但我不建议这样做,因为它们很难连接,并且生成的代码并不明确它做了什么。

相反,您可以结合使用UIViewController.dismiss和委托模式来实现您想要的功能。

票数 1
EN

Stack Overflow用户

发布于 2018-08-21 01:56:56

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

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

代码语言:javascript
复制
@IBAction func unwindToRootViewController(_ sender: UIStoryboardSegue) {
    // You can print("I returned"), just to test
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51934103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档