如何在swiftui中打开一个可选的@State,用于调用需要Binding的东西



如何打开要用作绑定参数的可选@State?

import SwiftUI
struct ContentView: View {
@State var testString = "Hello"
var body: some View {
TestView(test: testString)
}
}
struct TestView : View {
@State var test : String?
var body: some View {
TextField("Test", text: $test)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

这是我在TextField调用中收到的编译器错误。

Cannot convert value of type 'Binding<String?>' to expected argument type 'Binding<String>'

在这种情况下,我们应该使用Binding

struct ContentView: View {
@State var testString = "Hello"
var body: some View {
TestView(test: $testString)
}
}
struct TestView : View {
@Binding var test : String
var body: some View {
TextField("Test", text: $test)
}
}

这是一个看起来有效的单行解决方案。

TextField("Test", text: Binding($test)!)

所以新结构就像这个

struct TestView : View {
@State var test : String?
var body: some View {
VStack {
TextField("Test", text: Binding($test)!)
Text(test!)
}
}
}

最新更新