Swift:在展开期间不执行performSegueWithIdentifier

时间:2016-03-18 09:47:41

标签: ios swift unwind-segue

我使用segue to Exit技术,使用编程创建的按钮,从我的视图控制器#2创建了一个典型的展开流程,返回到查看控制器#1。

我有跟踪语句,确认按钮代码正在执行完毕,并且正在使用正确的segue ID调用#2 performSegueWithIdentifier func,但没有任何反应。

澄清:

我已将视图控制器#2连接到Exit并确认segue ID在所有位置都是准确的。我在#2 performSegueWithIdentifier func中跟踪了#2标识符,它完全匹配。

据我了解,我不再需要使用当前版本的2016 XCode进行调度修复。无论如何我试过了,没有任何效果。没有崩溃,没有放松。

使用此Exit技术以某种方式退绕技术不会反转。有什么想法吗?

我一直关注这里的教程:https://spin.atomicobject.com/2014/12/01/program-ios-unwind-segue/

代码VC#2:

// action func wired to button, fires perfectly
func unwind(seg:UIStoryboardSegue!) {

    self.performSegueWithIdentifier("unwind", sender: self)
}

2 个答案:

答案 0 :(得分:1)

在VC1中你需要一个功能:

@IBAction func unwindToVC1(segue:UIStoryboardSegue) {
}

然后在您的故事板中按住Ctrl键从黄色视图控制器图标拖动到“退出”图标,然后从弹出窗口中选择unwindToVC1:

为展开segue提供一个标识符,例如unwindToVC1

现在,在VC2中,创建按钮touchUpInside处理程序:

func buttonTapped(sender:UIButton) {
    self.performSegueWithIdentifier("unwindToVC1")
}

以编程方式设置按钮时,将此方法添加为操作处理程序:

button.addTarget(self, action: "buttonTapped:", forControlEvents: .TouchUpInside)

答案 1 :(得分:1)

  1. unwind功能移至VC1。将该实现保留为空,或者可以放置一个print语句以查看它是否可以使用该函数。
  2. 确保在故事板中有一个使用标识符" unwind"
  3. 创建的展开segue
  4. 添加一个在VC2中调用buttonAction:(button:UIButton)的按钮操作功能performSegueWithIdentifier("unwind"...)
  5. buttonAction设置为以编程方式创建的按钮的操作。