我刚刚意识到,在当前的Xcode 8 beta 6中,当我将展开动作连接到例如模态呈现的视图控制器中的条形按钮项目以展开模态呈现segue并呈现之前的视图控制器时在导航堆栈中,Xcode将“WithSegue”添加到可用于此目的的现有@IBActions的名称中 - 并且这会破坏展开segue(它将不会执行)。如果我在源代码中编辑storyboard文件(作为XML),并从@IBAction方法标识符中删除此“WithSegue”,则segue按预期工作。例如,我在原始视图控制器(unwind segue的目标)中的unwind方法称为“unwindFromSettingsToTableView” - 当我按CTRL连接模式呈现的栏按钮项时,Xcode / Interface Builder将此方法重命名为“unwindFromSettingsToTableViewWithSegue”将控制器视图到场景停靠站中视图控制器的退出项目。
这是Xcode 8 beta中的错误吗?这是一个已知的bug吗?我错过了什么吗?
我检查了之前连接的unwind segues(在Xcode 7中连接),并且没有这个“WithSegue”后缀。如果我删除那些现有的“vintage”展开segue,并在Xcode 8中再次连接它们,Interface Builder现在建议使用带有“WithSegue”后缀的相同方法名称 - 并且这些segues会中断。当我在storyboard源代码中删除后缀时,unwind segue会再次运行。
很高兴得到任何迹象。这种行为很烦人。
祝福! 的Björn
答案 0 :(得分:7)
在Swift 3中,如果您不希望它添加WithSegue
,请定义您的@IBAction
方法,以便不为第一个参数命名:
@IBAction func unwindHome(_ segue: UIStoryboardSegue) {
// this is intentionally blank
}
如果您不使用_
语法,那么当它连接到@IBAction
时,它会将WithSegue
添加到名称中。
当我使用上面的语法进行展开操作时,它在Xcode 8,beta 6中运行良好。
顺便说一句,如果我不在测试版6中使用上面显示的_
语法,则会将操作命名为unwindHomeWithSegue
,但它仍然适用于较长的名称,而不会编辑故事板XML需要。我想知道你的无功能解开是否是其他问题的结果。我们需要一个可重现的问题示例来进一步诊断。也许你可以分享MCVE。
答案 1 :(得分:3)
我有与OP相同的问题,在xcode 8 beta 6中使用了swift 2.3。
使用ios 8的This帖子解释了如何以编程方式展开segue。并在第三步中选择文档大纲中的展开segue。
选择此项并将右上角的unwindToSecondVCWithSegue
更改为unwindToSecondVC
,以便与代码匹配解决了我的问题。
@IBAction func unwindToSecondVC (segue: UIStoryboardSegue) {
print("unwindToSecondVC")
}
答案 2 :(得分:0)
Xcode 8.0的发布版本不仅仅是测试版,这个问题仍然存在。
我在放松赛段中注意到的是后缀是" WithUnwindSegue" 而不是" WithSegue"
我也使用了swift 2.3项目并创建了一个解开segue。与上述类似,在故事板上,修复方法是删除segue的属性检查器的操作属性(字段)中的 WithUnwindSegue 后缀。