我想知道当我想将数据从模型传递到 Controller 时,最佳实践是什么。
我想做的事情
我想在时间改变时更新标签。
CurrentTime.swift(模型)
var timer: Timer?
var currentTime: String?
init() {
if timer == nil{
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateCurrentTime), userInfo: nil, repeats: true)
}
}
@objc private func updateCurrentTime(){
let df = DateFormatter()
df.dateFormat = "HH:mm"
df.timeZone = TimeZone.current
let timezoneDate = df.string(from: Date())
currentTime = timezoneDate
}
ViewController.swift
class ViewController: UIViewController {
@IBOutlet var timeLabel: UILabel!
var currentTime = CurrentTime()
override func viewDidLoad() {
}
@IBAction func closeBtnWasPressed(_ sender: UIButton) {
dismiss(animated: true, completion: nil)
}
}
最佳答案
选项 1
1-添加此变量
weak var delegate: ViewController?
2- 在vc的viewDidLoad
中
currentTime.delegate = self
3-
let timezoneDate = df.string(from: Date())
currentTime = timezoneDate
delegate?.update(currentTime)
4-vc里面
func update(_ data:String) {
lbl.text = data
}
当然可以
delegate?.lbl.text = currentTime
但上面是MVC
选项 2
var ob:NSKeyValueObservation!
和viewDidLoad
ob = currentTime.observe(\CurrentTime.currentTime, options: .new) { cur, tex in
timeLabel.text = tex
}
关于ios - 将数据从模型传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53458265/