我试图拥有一个非常简单的 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")
})
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试添加一个简单的状态init()到 ChildView 时,我遇到了编译错误
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")
})
}
}
Run Code Online (Sandbox Code Playgroud)
这个错误非常令人费解。我尝试了不同的方法,据我所知,问题在于 和 的init()组合@Environment(\.dismiss)。但在真正的项目中我确实需要同时拥有它们。
有人知道错误的原因是什么或如何修复它?
Xcode版本:13.4.1
var@State必须以不同的方式初始化:
self._myInt = State(initialValue: foo)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
763 次 |
| 最近记录: |