我有一个文本字段,当用户输入特定字符串时我试图转到另一个视图。
import SwiftUI
struct ContentView: View {
@State var whether_go = "No"
var body: some View {
TextField("Goto?", text: $whether_go)
.navigate(to: CircleImage(), when: whether_go == "Yes")
}
}
Run Code Online (Sandbox Code Playgroud)
这会引发错误:Cannot convert value of type 'Bool' to expected argument type 'Binding<Bool>'因为when参数需要 Binding<Bool>
我尝试使用
when: Binding<Bool>(get: whether_happy == "Yes"))
Run Code Online (Sandbox Code Playgroud)
这会引发另一个错误:No exact matches in call to initializer.
那么我应该怎么做才能将布尔值转换为 Binding<Bool> ?
Dáv*_*tor 14
您需要使用Binding(get:set:)初始化程序。
var body: some View {
let binding = Binding<Bool>(get: { self.whether_go == "YES" }, set: { if $0 { self.whether_go = "YES"} else { self.whether_go = "NO" }})
return TextField("Goto?", text: $whether_go)
.navigate(to: CircleImage(), when: binding)
}
Run Code Online (Sandbox Code Playgroud)
如果您希望Binding是单向的,只需将一个空闭包传递给set。
let binding = Binding<Bool>(get: { self.whether_go == "YES" }, set: { _ in })
Run Code Online (Sandbox Code Playgroud)
与你的问题无关,但为什么是whether_goaString而不是 a Bool?另外,您应该遵循 Swift 命名约定,即变量名称采用小驼峰命名法 ( whetherGo)。
| 归档时间: |
|
| 查看次数: |
5125 次 |
| 最近记录: |