使用 Swift 在没有情节提要的情况下展开 segue

Posted

技术标签:

【中文标题】使用 Swift 在没有情节提要的情况下展开 segue【英文标题】:Unwind segue WITHOUT Storyboards using Swift 【发布时间】:2016-07-02 02:38:36 【问题描述】:

我似乎无法找到解决此问题的方法。我发现的所有关于展开转场的主题都通过情节提要实现转场。

我正在尝试学习如何在代码中纯粹制作我的布局。所以在我的新 Xcode 项目中,我正在删除情节提要文件。

我想在我的视图控制器上做一个 unwind segue,将用户登录到我的应用程序的主屏幕。当用户成功登录后,视图应该会展开。

谁能指出我如何仅使用代码实现此效果的正确方向?

【问题讨论】:

查看这个答案的第二部分(前半部分是segues,第二部分是没有segues)***.com/a/33716102/1630618 嘿,谢谢,这行得通,但需要额外的一行。我的呈现视图控制器是一个导航控制器,而不是根视图控制器,在我的情况下,它是我想要返回的,并在dismissViewController 方法完成之前更改它的值。我做了 destinationVC = navController.viewControllers[0] 让它工作 听起来不错。您可能还想谷歌代表团。更合适的划分是被调用的 VC 不知道调用者的任何信息(比如它的类)。您可以通过定义调用者实现的协议来实现这一点。在推送被调用者之前,您在被调用者中设置了对调用者的引用。引用是一个带有协议类型的弱指针。您在委托指针上调用协议方法以传回数据。 @vacawama 非常感谢,我查看了如何实现委托,它达到了我想要的结果,现在我知道这是完成这项任务的正确方法。你们的cmets基本上回答了我的问题! 很高兴能帮上忙! 【参考方案1】:

如果没有作为情节提要项目的转场,您将无法执行任何“转场”动作。

如果您要转换到的视图是导航堆栈上的第一个视图,您可以使用self.navigationController?.popToRootViewControllerAnimated(true)

如果你只是想去另一个视图控制器,你可以使用

presentViewController

【讨论】:

【参考方案2】:

如果当前视图控制器以模态方式呈现,您也可以dismissViewControllerAnimated

【讨论】:

以上是关于使用 Swift 在没有情节提要的情况下展开 segue的主要内容,如果未能解决你的问题,请参考以下文章

使用情节提要在 Xcode 6.1.1 中展开 Segue

Swift 以编程方式创建一个 unwind segue

在没有情节提要的情况下使用 UITableView

如何在没有情节提要的情况下设置 ViewController 的框架

如何在没有情节提要的情况下使用按钮切换视图?

如何在没有情节提要的情况下以编程方式实例化视图控制器