在UIKit中,我将具有以下代码:
@IBOutlet weak var itemNameField: UITextField!
@IBAction func itemNameFieldDone(_ sender: UITextField) {
thisItem.myName = sender.text ?? thisItem.myName
thisItem.modified()
}
在模型对象中:
func modified() {
dateModified = Date()
let cds = FoodyDataStack.thisDataStack
uuidUser = cds.uuidUser
uuidFamily = cds.uuidFamily
}
在SwiftUI中:
TextField($thisItem.myName)
说明性的,简洁的。当用户在TextField中输入内容时,SwiftUI会负责更新myName
属性,但是如何获取dateModified
属性来同时更新?
答案 0 :(得分:0)
使用包含TextField
的{{1}}初始化程序,并在闭包中包含所需的任何更新代码。
onEditingChanged
答案 1 :(得分:0)
有一个名为onChange
的新修饰符,用于检测任何状态的变化:
struct ContentView: View {
@State var text: String = ""
var body: some View {
TextField("Title", text: $text)
.onChange(of: text, perform: { value in
print(text)
})
}
}
答案 2 :(得分:-1)
您可以在项目类型声明的didSet
属性中添加myName
观察者,然后从此处调用modified
:
var myName: String = "" {
didSet {
self.modified()
}
}