如何在swift中将数据传递给multi-ViewController
我想将数据从例如ViewController“A”传递到ViewController“B”,并在点击例如“OK”按钮时将另一个数据从“A”传递到“C”。我该怎么做如何在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
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我如何才能做到这一点?