如何在没有segue或Swift导航栏的视图控制器之间传递变量?我尝试在类之外定义变量,但是变量被修改,因此当在另一个视图控制器中访问它们时,不会显示更新。我有5个视图控制器,每个都创建一个或两个新变量。我的目标是将这些变量传递给最后一个视图控制器,其中所有变量都显示在一个视图控制器上。
以下是一些代码示例:
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
}
}
我无法通过segue执行此操作,因为视图控制器的顺序如下所示:
1 - &gt; 2 - &gt; 3 - &gt; 4 - &gt; 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)
}
}
答案 0 :(得分:0)
您可以采取以下几种方法:
答案 1 :(得分:0)
我无法通过segues执行此操作,因为视图控制器的序列如下所示:1 - &gt; 2 - &gt; 3 - &gt; 4 - &gt; 5,我需要从1到5获取数据
说&#34;不能&#34;#34;真傻。当然可以。你只是不断传递和积累信息,以便所需的一切都达到5.你只是意味着你不想要,要么是因为你认为它很难看,要么是因为你没有&# 39;我想花时间来实施它。
但为什么不呢?为什么不传递一个自定义对象,其中包含越来越多的所有需要的属性,并在需要时进行修改,因为它向下移动直到达到5?