gpt4 book ai didi

swift - 如何在 View Controller 之间传递变量而不需要快速的segue

转载 作者:行者123 更新时间:2023-11-30 11:45:37 24 4
gpt4 key购买 nike

如何在 Swift 中没有 segue 或导航栏的情况下在 View Controller 之间传递变量?我尝试在类外部定义变量,但变量被修改,因此在另一个 View Controller 中访问它们时不会显示更新。我有 5 个 View Controller ,每个 View Controller 上创建一两个新变量。我的目标是将这些变量向下传递到最后一个 View Controller ,其中所有变量都显示在一个 View Controller 上。

下面是一些代码的示例:

class ViewController_name: UIViewController, UITextFieldDelegate {

//MARK: Properties

@IBOutlet weak var label: UILabel!
@IBOutlet weak var field_first: UITextField!
@IBOutlet weak var field_last: UITextField!

override func viewDidLoad() {
super.viewDidLoad()
self.field_first.delegate = self
self.field_last.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

//MARK: Actions

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}

func textFieldShouldReturn(_ textField: UITextField) -> Bool { //function tests for pressing return in a text field
self.view.endEditing(true) //closes the keyboard
return true
}
@IBAction func button_name(_ sender: UIButton) { //tests for button click
let input_name_first:String = field_first.text! //sets the variable input to the first name text field
let input_name_last:String = field_last.text! //sets the variable input to the last name text field
print("\(input_name_first) \(input_name_last)") //prints the full name to console
}
}

我无法通过 Segues 来做到这一点,因为 View Controller 的序列如下所示:

1 -> 2 -> 3 -> 4 -> 5

我需要获取从1到5的数据。

来自 View Controller 1 的代码,用于将两个变量发送到 View Controller 2。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let name_pass_first = segue.destination as! ViewController_complete
if let text = field_first.text {
name_pass_first.text = text
}
let name_pass_last = segue.destination as! ViewController_complete
if let text1 = field_last.text {
name_pass_last.text1 = text1
}
}

来自 View Controller 2 的代码,用于从 View Controller 1 接收变量:

override func viewDidLoad() {
super.viewDidLoad()
if let received_pass_first_name = text {
print(received_pass_first_name)
}
if let received_pass_last_name = text1 {
print(received_pass_last_name)
}
}

最佳答案

I can't do this through segues because the sequence of view controllers looks like this: 1 -> 2 -> 3 -> 4 -> 5 and I need to get data from 1 to 5

说“不能”是愚蠢的。当然可以。你只是不断地传递和积累信息,以便所需的一切都达到 5。你只是意味着你不想这样做,要么是因为你认为它很难看,要么是因为你不想花时间来实现它。

但是为什么不呢?比如说,为什么不传递一个包含所有所需属性的自定义对象,该对象会越来越多地填充,并根据需要进行修改,因为它会向下移动直到达到 5?

关于swift - 如何在 View Controller 之间传递变量而不需要快速的segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48855867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com