使用Swift实现无需Storyboards的Unwind Segue

4
我似乎找不到解决这个问题的方法。我发现的所有关于取消segue的主题都是通过storyboard实现的。
我试图学习如何仅使用代码创建布局。因此,在我的新Xcode项目中,我删除了故事板文件。
我想在我的一个视图控制器上执行一个取消segue,该视图控制器将用户登录到我的应用程序的主屏幕。当用户成功登录时,视图应该取消segue。
有人能指点我如何仅使用代码来实现这种效果吗?

3
请看这个答案的下半部分(上半部分是转换话题,下半部分没有转换话题)http://stackoverflow.com/a/33716102/1630618 - vacawama
嘿,谢谢,这个方法可行,但需要加上一行代码。我的 presenting view controller 是一个 nav controller,而不是它的 root view controller,我想在 dismissViewController 方法完成之前回到它并改变它的值。我使用了 destinationVC = navController.viewControllers[0] 来实现这个目的。 - romero-ios
2
听起来不错。您可能还想搜索一下委托模式。更合适的分工是被调用的 VC 不知道调用者的任何信息(比如它的类)。您可以通过定义一个调用者实现的协议来实现这一点。在将被调用者推入之前,您在被调用者中设置一个对调用者的引用。该引用是一个弱指针,其类型为协议。您可以在委托指针上调用协议方法以传递数据。 - vacawama
@vacawama 非常感谢,我查了一下如何实现委托,它实现了我想要的结果,现在我知道这是完成此任务的正确方式。你的评论基本上回答了我的问题! - romero-ios
很高兴能够帮助! - vacawama
2个回答

7

如果没有故事板项目,您无法执行任何“segue”操作。

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

如果您只想转到另一个视图控制器,则可以使用

presentViewController

0

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