XCode 8 Swift:放松的转移数据不起作用



所以我一直在试图让一个休闲的segue从最近两天开始工作。我尝试观看并遵循几个不同的教程,没有一个成功。我创建了@IBAction override func unwind(for unwindSegue: UIStoryboardSegue, towardsViewController subsequentVC: UIViewController),但这从未执行任何代码。我放了一个简单的印刷品,并打印了文本,它从未打印过文本。我在第一个视图控制器中创建了一个,然后在第二视图控制器中,我有一个我连接到视图控制器顶部出口的按钮,并选择了Undind动作,并且永远不会放松。我在做什么错或失踪?

所以这是我到目前为止我有2个视图:RaceViewController&SinglestatViewController

我将从RaceViewController中选择指定的行开始,它们将单程打开。我在singlestatViewController中有一个名为dimplybtn的按钮。当我单击按钮时,它会删除SinglestatViewContoller。我只需要它将一些数据传递给RaceViewController。

因此,如果用户在表中选择3个单元格(行是半孔,半el和人)中的1个,它将打开singlestatviewController并要求选择1个stat(这些将是6个按钮(str,dex,dex),con,int,wis,chr)当他们选择一个按钮时,它将返回数据并更新详细信息TextLabel。

我选择人,然后选择str。当它返回RaceViewController并将详细信息TextLabel中的文本更新为 2 str时。

现在,这是我用来删除的代码。我可以使用它继续吗?还是我实际上需要执行露天:

@IBAction func dismissbtn(_ sender: Any)
{
    dismiss(animated: true, completion: nil)
}

您需要执行放松并发送数据如下:

@IBAction func unwindToRaceViewController(sender: UIStoryboardSegue) 
{
    if let sourceViewController = sender.sourceViewController
                            as? RaceViewController {
    stat = sourceViewController.stat
}

您可以将本文引用为Undind Segues作为委托的替代品

您也可以使用委托将数据传递回上一个控制器。

好吧,所以您有VC A和VC B,这是使用Undind Segue需要做的:

  1. 在VC A中,创建一个segue函数,例如。@IBAction func unwind(segue: UIStoryboardSegue)

  2. 在VC B中,编写调用self.performSegueWithIdentifier("unwind", sender: self)的代码(假设标识符和函数名称是相同的 - 在您的dismissbtn中调用此名称)

  3. 在情节板中的VC B中,在其顶部查看,将有一个黄色按钮和2个橙色按钮,握住并将黄色按钮拖到出口橙色按钮,选择您在VC中创建的动作,给它一个标识符,如上所述

  4. unwind func中,其余的与正常segue在向前传递数据时,只需将destination更改为 source,并且必须从VC A出现VC B,否则请使用委托书