我正在嘗試擁有一個非常簡單的 SwiftUI 視圖層次結構:父級和子級。孩子應該能夠通過點擊一個按鈕來關閉自己。
以下代碼作業正常
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLink {
ChildView()
} label: {
Text("Go")
}
}
}
}
struct ChildView: View {
@Environment(\.dismiss) var dismiss
var body: some View {
Text("Hello, world!")
.padding()
Button(action: {
dismiss()
}, label: {
Text("Dismiss")
})
}
}
但是,當我嘗試向 ChildView 添加簡單狀態init()時,我遇到了編譯錯誤
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLink {
ChildView(foo: 42)
} label: {
Text("Go")
}
}
}
}
struct ChildView: View {
@Environment(\.dismiss) var dismiss
@State private var myInt: Int
init(foo: Int) {
self.myInt = foo // <--- ERROR IS HERE, "Variable 'self.myInt' used before being initialized"
}
var body: some View {
Text("Hello, world!")
.padding()
Button(action: {
dismiss()
}, label: {
Text("Dismiss")
})
}
}
這個錯誤非常令人費解。我嘗試了不同的東西,據我所知,問題在于init()和@Environment(\.dismiss)呈現的組合。但我真的需要將它們都用于真正的專案。
任何人都知道錯誤的原因或如何解決它?
Xcode 版本:13.4.1
uj5u.com熱心網友回復:
@Statevar 必須以不同的方式初始化:
self._myInt = State(initialValue: foo)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/496760.html
上一篇:Swift延遲行為
下一篇:鏈接不會改變顏色并擺脫文本裝飾
