如何在swift中将数据传递给multi-ViewController

如何在swift中将数据传递给multi-ViewController,swift,Swift,我想将数据从例如ViewController“A”传递到ViewController“B”,并在点击例如“OK”按钮时将另一个数据从“A”传递到“C”。我该怎么做 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { println("YES") var mojodiTemp : B = segue.destinationViewController as B

我想将数据从例如ViewController“A”传递到ViewController“B”,并在点击例如“OK”按钮时将另一个数据从“A”传递到“C”。我该怎么做

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    println("YES")

    var mojodiTemp : B = segue.destinationViewController as B        println("NO")
    mojodiTemp.tempMojoodi = mablagh.text!

    var HesabeHarFard : C = segue.destinationViewController as C        
    HesabeHarFard.person = person
    HesabeHarFard.year = year
    HesabeHarFard.month = month
    HesabeHarFard.day = day

}

这篇文章中有一个详细的例子:

总之:

使用performsguewithidentifier并使用prepareforsgue支持它,如下所示:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
            if (segue.identifier == "segueTitle") {
                // pass data to next view
                let destinationVC = segue.destinationViewController as! YourNextViewController
                destinationVC.transferObject = self.transferObject;

        }
    }

首先使用适当的数据类型在viewControllerB和C中创建dataToPass类变量/属性,并执行以下步骤:

解决方案1: //在ViewControllerA中,在创建之前编写以下函数,您需要从A到B和A到C的分段,每个分段都有标识符

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "identifierForB" {
        let instanceOfViewControllerB = segue.destinationViewController as! ViewControllerB
        instanceOfViewControllerB.dataToPass = dataOne
    } else if segue.identifier == "identifierForC" {
        let instanceOfViewControllerC = segue.destinationViewController as! ViewControllerC
        instanceOfViewControllerB.dataToPass = nextData
    }
}
解决方案2: 如果您按代码转到ViewControllerB或C:执行以下操作:(按下“确定”按钮,保持此代码处于活动状态)

解决方案3 在类A中创建两个属性:

var vcB: B!
var vcC: C!
将if保持在A类定义之下 现在单击“确定”按钮:

 let storyBoard = UIStoryboard(name: "Main", bundle: nil)
 vcB = storyBoard.instantiateViewControllerWithIdentifier("ViewControllerBIdentifier") as! ViewControllerB
 vcB.dataToPass = dataOne

 vcC = storyBoard.instantiateViewControllerWithIdentifier("ViewControllerCIdentifier") as! ViewControllerC
 vcC.dataToPass = dataOne
当您想在屏幕上打开C视图控制器时,请确保显示vcC,当您想打开B视图控制器时,请确保显示vcB。 当您单击按钮或从触发器显示C视图时:只需将以下代码放入函数/操作中:

self.presentViewController(vcC, animated: true, completion: nil)
        self.presentViewController(vcB, animated: true, completion: nil)
当您单击按钮或从触发器显示B视图时:只需在函数/操作中输入以下代码:

self.presentViewController(vcC, animated: true, completion: nil)
        self.presentViewController(vcB, animated: true, completion: nil)

希望这就是你想要的,是吗?

你试过什么?你有密码吗?如果是这样的话,把它贴在这里,人们会帮忙的。否则,您通常会获得否决票,就像您已经获得的一样。您希望如何显示viewcontroller B和C?是的,我们可以将数据从A传递到B,将另一个数据从A传递到C。请详细解释。@Dari我不想显示B和C,我只想将一些数据传递到B和C,并在按下“确定”按钮时保留在ViewController上。B和C视图控制器已加载到内存中?您是如何创建/实例化viewcontroller B和C的?您能否给出视图控制器在内存中的存在方式?等级制度。比如A先是B然后是C??把你的问题说清楚。@Dari我有三个ViewController A、B和C。我在ViewController中有一个文本字段和一个pickerView,我想将在文本字段中键入的一些内容传递给B ViewController,并将在ViewController中选择pickerView的一些内容传递给C ViewController我如何才能做到这一点?