所以我一直在试图让一个休闲的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需要做的:
-
在VC A中,创建一个segue函数,例如。
@IBAction func unwind(segue: UIStoryboardSegue)
-
在VC B中,编写调用
self.performSegueWithIdentifier("unwind", sender: self)
的代码(假设标识符和函数名称是相同的 - 在您的dismissbtn
中调用此名称) -
在情节板中的VC B中,在其顶部查看,将有一个黄色按钮和2个橙色按钮,握住并将黄色按钮拖到出口橙色按钮,选择您在VC中创建的动作,给它一个标识符,如上所述
-
在
unwind
func中,其余的与正常segue在向前传递数据时,只需将destination
更改为source
,并且必须从VC A出现VC B,否则请使用委托书