在 Xcode 6 Beta 4 中展开 Segue
Posted
技术标签:
【中文标题】在 Xcode 6 Beta 4 中展开 Segue【英文标题】:Unwind Segue in Xcode 6 Beta 4 【发布时间】:2014-07-25 17:05:05 【问题描述】:我一直在尝试在 Xcode 6 中为 swift 应用程序添加一个 unwind segue,并且在前三个 beta 的发行说明中,它被声明为不受支持。但是,在 Beta 4 中,该错误说明不再存在。我听说人们已经能够让它工作,但我没有这样的运气。所以,我的问题是:我应该如何尝试查看 unwind segue 是否可以在我的应用程序中工作?我应该尝试什么?我正在使用 UIBarButtonItem 来触发 segue。
到目前为止,我已将此代码放入目标控制器的 .swift 文件中:
@IBAction func unwindToSegue(segue:UIStoryboardSegue)
使用此代码,我能够通过从栏按钮拖动到退出图标,然后单击 unwindToSegue 方法来将栏按钮连接到函数。那部分已经工作了,但是代码没有运行,即使我在没有调用它的函数中放置了一个断点。
【问题讨论】:
【参考方案1】:您需要将您的unwindToSegue
函数放在原始 ViewController(即您尝试返回的 ViewController)中。
您可以尝试的另一件事是以编程方式调用 segue。首先,将视图控制器图标的退出转场连接到退出图标(三个图标都在 Interface Builder 中视图控制器的顶部)。给那个 segue 起一个名字,比如“goBackHome”。然后连接你的按钮来调用这个@IBAction
:
@IBAction func headHome()
println("Button seen. Trigging exit segue manually...")
self.performSegueWithIdentifier("goBackHome", sender: self)
【讨论】:
是的,它在我要返回的控制器中。 我创建了一个新项目,并且能够使用您的功能使其工作。我证实,如果你把它放在你要返回的控制器中,它会让你把它连接起来,但它什么也没做。这就是为什么我认为你可能已经这样做了。 我发现了问题,视图控制器的 .swift 文件没有正确连接到视图控制器。这是根本问题,所以我认为它是正确的。谢谢。 将上面的展开方法放在正确的控制器中很重要。如果它不在执行 push segue 的控制器中,则不会被调用。【参考方案2】:我的问题是我从自定义容器 VC 转到标准视图控制器 (VC),但试图重新转到丢失了原始导航栏。研究论坛显示,解开这些问题会将新的 VC“协议”从堆栈中“弹出”,并允许我回到原来的 VC“协议”不变。
我在新VC中拖入一个按钮,首先将它拖到swift文件中创建动作“back2main”,修改如下,然后将按钮拖到新VC本身顶部的退出图标,这会产生“展开转场”。
@IBAction func back2main(segue: UIStoryboardSegue)
dismissViewControllerAnimated(true, completion: nil)
【讨论】:
【参考方案3】:使用 XCode 6 Beta 4 可以正常工作。从类定义中删除 @objc(classname) 并删除(解决方法).h 文件。
我昨天也有类似的效果,我的 Viewcontroller 中的一个按钮没有触发 unwind segue。
试试看: 在您的视图控制器上放置一个新的 UIButton 并保持原样。不要为了确保没有副作用而进行任何更改。然后将此按钮连接到您的 unwind segue 并尝试它是否有效。
【讨论】:
【参考方案4】:我遇到了同样的问题。当我选择退出按钮并且它正在连接时显示展开功能,但是当点击按钮时,没有任何反应。
经过一番折腾,我意识到这是由于我选择从一个视图控制器转换到另一个视图控制器的 Segue。
事实证明,我希望它返回的视图具有多个不同的导航组件,这些导航组件在显示“子”视图时被删除。我通过将其从 Show(或显示细节)更改为 popover 来解决它。
转到转场,选择属性检查器,然后您可以从那里更改转场。
【讨论】:
以上是关于在 Xcode 6 Beta 4 中展开 Segue的主要内容,如果未能解决你的问题,请参考以下文章
在 Xcode7 - beta 5 和 storyboard 中展开 segue
Xcode 6 beta 4,UIButton 在collectionviewcell 中不负责
安装 XCode 6 beta 4 后无法运行旧的 swift 项目