當我使用TextFieldin 時Form,直到點擊該欄位才會顯示正確的值。
名稱欄位最初顯示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: "[email protected]")
var body: some Scene {
WindowGroup {
ContentView(user: $user)
}
}
}
在 iPhone 12 iOS 15.1 和模擬器 iOS 15.0 上測驗
uj5u.com熱心網友回復:
要“使其作業”,請將.onAppear {...}to移動到 a 之后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)
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/338359.html
