我正在编写一个小型基本程序(仍在学习),但我遇到了障碍。
我现在可以在 2 个 View Controller 之间传递 1 个数组,并在按下第二个 View Controller 中的按钮时成功打印它。
但是,我真正想做的是传递两个数组和一个整数,它们是从第一个 VC 上的函数创建的,并让它们通过第二个 VC 进行访问。
第一个 VC 的代码在这里:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "goToWorkout" {
if let destVC = segue.destination as? WorkoutViewController {
destVC.bothArrays = self.testFunction()
}
}
//Get the new view controller using segue.destinationViewController.
//Pass the selected object to the new view controller.
}
func testFunction() -> [String] {
let randomArray1 = ["blah","blah","ploop"]
let randomArray2 = ["alan", "john"]
let randomInt = 5
return BOTH ARRAYS AND INT TO SEND TO THE NEXT VIEW CONTROLLER?
}
@IBAction func goPressed(_ sender: UIButton) {
performSegue(withIdentifier: "goToNextVC", sender: self)
}
这里还有第二个 VC:
class WorkoutViewController: UIViewController {
var randomArray1 = [String]()
var randomArray2 = [String]()
var randomInt = 0
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func nowButtonPressed(_ sender: UIButton) {
print(randomArray1)
print(randomArray2)
print(randomInt)
}
}
我可以只使用一个数组来使其工作,但我需要多个数组和一个要传递的值!我尝试过使用它(例如尝试 '-> [String], [String], Int)但没有运气
非常感谢任何帮助!
最佳答案
您可以简单地使用元组
将多个不同类型的变量包含在一个变量中。您应该将包含 performSegue
函数中所有 3 个变量的元组作为 sender
参数传递,然后将它们分配给 prepare(for:) 中的相关实例属性
方法。
如果你想保留生成变量的函数,你应该将函数的返回类型更改为可以容纳3个变量的元组。
func testFunction() -> (arr1:[String],arr2:[String],randInt:Int) {
let randomArray1 = ["blah","blah","ploop"]
let randomArray2 = ["alan", "john"]
let randomInt = 5
return (randomArray1, randomArray2, randomInt)
}
然后将 testFunction
的返回值分配给 performSegue
的发送者输入参数:
performSegue(withIdentifier: "goToNextVC", sender: testFunction())
分配变量:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "goToWorkout" {
if let destVC = segue.destination as? WorkoutViewController, let variablesToBePassed = sender as? (arr1:[String],arr2:[String],randInt:Int) {
destVC.randomArray1 = variablesToBePassed.arr1
destVC.randomArray2 = variablesToBePassed.arr2
destVC.randomInt = variablesToBePassed.randInt
}
}
}
关于ios - swift - 通过 Segue 返回并传递多个数组和一个 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49882955/