[英]Q: Bug on Form and TextField [SwiftUI]
當我在Form
使用TextField
時,在點擊該字段之前不會顯示正確的值。
名稱字段最初顯示為dummy
並在點擊時更改為shuji
。
如果我將Form
更改為VStack
,則會顯示初始值。
內容視圖.swift
import SwiftUI
struct User {
var name: String
var email: String
}
struct ContentView: View {
@Binding var user: User
@State private var name: String = "dummy"
@State private var email: String = ""
var body: some View {
NavigationView {
Form {
TextField("Name", text: $name)
TextField("Email", text: $email)
}
.navigationTitle("Edit user")
.toolbar {
Button("Save") {
user.name = name
user.email = email
}
}
}
.onAppear {
name = user.name
email = user.email
}
}
}
FormTestApp.swift
import SwiftUI
@main
struct FormTestApp: App {
@State var user = User(name: "shuji", email: "shuji@abc.com")
var body: some Scene {
WindowGroup {
ContentView(user: $user)
}
}
}
在 iPhone 12 iOS 15.1 和模擬器 iOS 15.0 上測試
要“使其工作”,請將.onAppear {...}
移動到TextField
,如下所示:
struct ContentView: View {
@Binding var user: User
@State private var name: String = "dummy"
@State private var email: String = ""
var body: some View {
NavigationView {
Form {
TextField("Name", text: $name)
TextField("Email", text: $email)
.onAppear { // <--- here
name = user.name
email = user.email
}
}
.navigationTitle("Edit user")
.toolbar {
Button("Save") {
user.name = name
user.email = email
}
}
}.navigationViewStyle(.stack)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.