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的主要内容,如果未能解决你的问题,请参考以下文章

Swift:执行 Segue 不触发 - 无错误(可达性)

Xcode Swift 使用警报执行 segue

使用标识符执行 segue 在 swift 2 中不起作用

Swift:如果条件不满足,则继续执行 segue

执行 segue swift 4

如何在swift3中完成5个文件下载请求后执行segue