【问题标题】:Segue won't execute SwiftSegue 不会执行 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,否则当您触摸图像时将不会选择单元格。这可能是您问题的根源。

标签: ios uicollectionview segue


【解决方案1】:

我建议不要从单元格或任何对象(如按钮)创建 segue。 使用唯一标识符创建从一个 ViewController 到 OtherViewController 的 segue。 然后使用标识符自己调用performSegueWithIdentifier

【讨论】:

  • 为什么?从按钮或单元格中制作 segues 非常好。
  • @rdelmar 是的,但是 OP 难以识别触发 segue 的对象。所以我认为手动操作会清除问题。
  • 谢谢,这有助于告诉我我是从视图控制器上的错误位置运行 segue,即不是单元格
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-24
  • 2018-12-05
  • 1970-01-01
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多