现在使用委托模式传输数据:
我已经实现了这个功能:
var overviewController = addOverview()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
overviewController.delegate = self
}
func setValues(){
overview.name = buildingName.text!
overview.city = city.text!
overview.contact = contactName.text!
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
overview.date = dateFormatter.string(from: datePicker.date)
overview.email = email.text!
overview.building = buildingTypes[buildingPicker.selectedRow(inComponent: 0)]
overview.freq = cleaningFreqs[cleaningFreqPicker.selectedRow(inComponent: 0)]
overview.phone = phoneNumber.text!
overview.sft = sqFt.text!
overview.state = State.text!
overview.street = street.text!
}
// MARK: - Navigation
override func willMove(toParent parent: UIViewController?) {
super.willMove(toParent:parent)
if parent == nil {
setValues()
print("Hello")
delegate?.setValues(obj: overview)
}
}
这里是我写的协议中的 setValues:
func setValues(obj: overviewProps){
overview = obj
}
但是,在打印对象的属性之一后,数据尚未传输。
您可以使用委托模式或使用观察者。请参阅这些示例以获取帮助。
编辑:根据您的代码使用委托
协议
protocol SetValueDelegate {
func didFinishSetValue(obj: Overview)
}
第一个视图控制器
class FirstViewController: UIViewController, SetValueDelegate {
var secondViewController = SecondViewContrller()
override func viewDidLoad() {
super.viewDidLoad()
secondViewController?.delegate = self
}
func didFinishSetValue(obj: Overview) {
// when it comes back to the first screen you can use ->> obj data
}
}
第二个视图控制器
class SecondViewController: UIViewController {
var delegate: SetValueDelegate?
override func viewDidLoad() {
super.viewDidLoad()
…
}
override func willMove(toParent parent: UIViewController?) {
super.willMove(toParent: parent)
if parent == nil {
setValues()
…
self.delegate?.didFinishSetValue(obj: overview)
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句