大家好,你们能帮帮我吗?我有一个应用程序,有两个ViewController,在第一个VC中,我有四个空的TextField,在第二个VC中,我有四个空的Label,它们应该接收新信息并向我显示标签,但我的代码不工作,所以你能帮助解决这个问题吗?我认为我的personalData有问题
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var name: UITextField!
@IBOutlet weak var age: UITextField!
@IBOutlet weak var city: UITextField!
@IBOutlet weak var mail: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
let tap = UITapGestureRecognizer(target: self, action: #selector(self.dismissKeyboard))
view.addGestureRecognizer(tap)
}
@objc func edit() {
print("Edit is done")
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard segue.identifier == "personalData" else { return }
guard let destination = segue.destination as? SecondViewController else { return }
destination.personalData = name.text ?? ""
destination.personalData = age.text ?? ""
destination.personalData = city.text ?? ""
destination.personalData = mail.text ?? ""
}
@objc func dismissKeyboard() {
view.endEditing(true)
}
}
//////////////////////////////////////
import UIKit
class SecondViewController: UIViewController {
struct User{
}
var personalData = ""
override func viewDidLoad() {
super.viewDidLoad()
firstProfileLabel.text = personalData
secondProfileLabel.text = personalData
thirdProfileLabel.text = personalData
lastProfileLabel.text = personalData
print("SecondVC", #function)
navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .edit,
target: self,
action: #selector(edit))
}
@objc func edit() {
print("Edit is done")
}
@IBOutlet weak var firstProfileLabel: UILabel!
@IBOutlet weak var secondProfileLabel: UILabel!
@IBOutlet weak var thirdProfileLabel: UILabel!
@IBOutlet weak var lastProfileLabel: UILabel!
}
我的导师说:“问题出在变量personalData上,该变量是stripe类型,只能存储一个值,如果你想通过变量传递值,而不是直接传递值,可以创建一个结构,例如用户带有变量Name、Age、City等,并使personalData成为用户类型和空数组。”
但我不知道该怎么用代码写。
1条答案
按热度按时间dsekswqp1#
从简单的开始,为第二个视图控制器提供要传递的每个值的单独属性:
然后在第一个视图控制器的
perpare(for:)
方法中,分别设置每个变量:重写第二个视图控制器的viewDidLoad方法,将每个属性安装到正确的字段中。
一旦你让它工作起来,你就可以知道如何在一个结构中传递所有的字符串值。
提示:
创建一个名为UserInfo的结构体:
然后给第二个视图控制器一个UserInfo类型的属性,并在
prepare(for:)
中设置**that