Swift 如何设置可以从prepareForSegue接收实例的空变量?
我理解prepareForSegue函数,但不知道如何设置可以接收实例的空变量 swift 4/Xcode 9.2Swift 如何设置可以从prepareForSegue接收实例的空变量?,swift,xcode,instance,var,Swift,Xcode,Instance,Var,我理解prepareForSegue函数,但不知道如何设置可以接收实例的空变量 swift 4/Xcode 9.2 // I want to be able to send classes that look like this to var pickedQuiz class mathQuestionBank { var list = [Questions]() init() { let item = Questions(text: "What is two plus two?"
// I want to be able to send classes that look like this to var pickedQuiz
class mathQuestionBank {
var list = [Questions]()
init() {
let item = Questions(text: "What is two plus two?", correctAnswer: "four", textA: "three", textB: "four", textC: "five", textD: "9y" )
list.append(item)
list.append(Questions(text: "How many sides does a triangle have?", correctAnswer: "three", textA: "two", textB: "four", textC: "three", textD: "five"))
list.append(Questions(text: etc....
}
}
只需使用prepareForSegue 在另一个类中,可以按如下方式定义变量:
class NextViewController {
var yourVariable = ABCType()
}
不清楚你所说的传递实例是什么意思。您的意思是传递某个自定义对象的实例,而不仅仅是字符串之类的值类型?只需将@Madhur示例中的变量更改为所需的类类型:
class ClassToPass {
value1: String?
value2: Data?
value3: Int
init(value1: String?, value2: Data?, value3: Int?) {
self.value1 = value1
self.value2 = value2
self.value3 = value3
}
}
class myViewController: UIViewController {
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "segueIdentifier" {
if let nextVC = segue.destinationViewController
as? NextViewController {
let valueToPass = ClassToPass(value1: "A String",
value2: nil,
value3: 7)
nextVC.yourVariable = valueToPass
}
}
}
}
//And in the other view controller:
class NextViewController {
var yourVariable: ClassToPass? = nil
}
另一端需要一个变量来接收它。“但是当然了!”马丁穆尔顿谢谢你的回答,我在另一端有一个变量。如何初始化变量以便向其传递实例?这不就是在NextViewController上将字符串HelloWorld传递给您的变量吗?如何传递实例?我应该如何在NextViewController上设置变量以接收该实例?您可以非常类似地执行此操作,无论如何,您可以给出另一个示例,我理解prepareForSegue部分,我正在努力在NextViewController上设置一个空变量以再次接收instancecheck!天哪!ABCType只是为了解释一下,在那里使用一个有效的数据类型,如果您使用的是字符串,请通过删除带有字符串的ABCType再次检查。嘿,邓肯,谢谢您的回复。为了更加清晰,我在上面添加了更多代码。但我试图在mathQuestionBank上面发送一个完整的实例示例,由var PickedQuike接收。如果我这样写:var pickedquick=mathQuestionBank,一切都很好。但我需要能够将不同的实例发送到var PickedQuike,即:geographyQuestionBank、scienceQuestionBank等,一次只发送一个实例,我希望这能解决所有问题。如果你需要更多信息,请告诉我。
class NextViewController {
var yourVariable = ABCType()
}
class ClassToPass {
value1: String?
value2: Data?
value3: Int
init(value1: String?, value2: Data?, value3: Int?) {
self.value1 = value1
self.value2 = value2
self.value3 = value3
}
}
class myViewController: UIViewController {
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "segueIdentifier" {
if let nextVC = segue.destinationViewController
as? NextViewController {
let valueToPass = ClassToPass(value1: "A String",
value2: nil,
value3: 7)
nextVC.yourVariable = valueToPass
}
}
}
}
//And in the other view controller:
class NextViewController {
var yourVariable: ClassToPass? = nil
}