Segue 不会执行 Swift
Posted
技术标签:
【中文标题】Segue 不会执行 Swift【英文标题】:Segue won't execute Swift 【发布时间】:2015-03-15 16:00:08 【问题描述】:我有一个从集合视图(包装在视图控制器中)运行到另一个视图控制器的 segue,但该函数永远不会被调用:
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
println(segue.identifier)
println(sender)
println("SEGUE SELECTED: \(segue.identifier)")
if(segue.identifier == "segueToDetailView")
let cell = sender as CollectionViewCell;
在函数开始处放置了一个断点,但从未到达。
任何意见表示赞赏。
【问题讨论】:
你给performSegueWithIdentifier
打过电话吗?
我正在使用一个模板,当在 CollectionView 中选择一个单元格时,prepareForSegue 似乎被隐式调用。
然而,当 CollectionView 成为视图控制器的子视图时,当单元格中的图像被选中时,什么也没有发生。所以我添加了一个按钮并调用 performSegueWithIdentfer 现在调用 segue 但是应用程序在尝试获取 indexPath 时崩溃 let indexPath = collectionView?.indexPathForCell(cell)
所以segue正在执行,但prepareForSegue
没有被调用?还是没有执行segue?
如果 segue 是直接从单元格中创建的,则应在选择单元格时执行该 segue。如果那里有图像视图,请确保已将其 userInteractionEnabled 属性设置为 true,否则当您触摸图像时将不会选择单元格。这可能是您问题的根源。
【参考方案1】:
我建议不要从单元格或任何对象(如按钮)创建 segue。
使用唯一标识符创建从一个 ViewController 到 OtherViewController 的 segue。
然后使用标识符自己调用performSegueWithIdentifier
。
【讨论】:
为什么?从按钮或单元格中制作 segues 非常好。 @rdelmar 是的,但是 OP 难以识别触发 segue 的对象。所以我认为手动操作会清除问题。 谢谢,这有助于告诉我我是从视图控制器上的错误位置运行 segue,即不是单元格以上是关于Segue 不会执行 Swift的主要内容,如果未能解决你的问题,请参考以下文章