CRE*_*8IT 6 ios swift ios13 swiftui
BindableObjects到目前为止,我一直在使用SwiftUI并了解etc 的概念(至少我希望我这样做)。
我遇到了一个愚蠢的问题,似乎找不到以下答案:如何初始化@Binding变量?
我有以下代码:
struct LoggedInView : View {
@Binding var dismissView: Bool
var body: some View {
VStack {
Text("Hello World")
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的预览代码中,我想传递以下类型的参数Binding<Bool>:
#if DEBUG
struct LoggedInView_Previews : PreviewProvider {
static var previews: some View {
LoggedInView(dismissView: **Binding<Bool>**)
}
}
#endif
Run Code Online (Sandbox Code Playgroud)
我将如何进行初始化?尝试过:
Binding<Bool>.init(false)
Binding<Bool>(false)
Run Code Online (Sandbox Code Playgroud)
甚至:
@Binding var dismissView: Bool = false
Run Code Online (Sandbox Code Playgroud)
但是没有一个...有什么想法吗?
Nev*_*oon 69
使用Binding.constant(false)很好,但仅适用于静态预览。如果您真的想启动实时预览,constant则行为方式将与实际情况不同,因为您的操作永远不会更新它。我个人经常使用实时预览,因为我可以玩一个孤立的视图。
这是我对需要的预览所做的工作Binding:
import SwiftUI
struct SomeView: View {
@Binding var code: String
var body: some View {
// some views modifying code binding
}
}
struct SomeView_Previews: PreviewProvider {
static var previews: some View {
PreviewWrapper()
}
struct PreviewWrapper: View {
@State(initialValue: "") var code: String
var body: some View {
SomeView(code: $code)
}
}
}
Run Code Online (Sandbox Code Playgroud)
Pau*_*w11 22
LoggedInView在您的应用中使用时,您确实需要提供一些绑定,例如@State上一个视图中的或@EnvironmentObject。
对于PreviewProvider仅需要固定值的特殊情况,可以使用.constant(false)
例如
#if DEBUG
struct LoggedInView_Previews : PreviewProvider {
static var previews: some View {
LoggedInView(dismissView: .constant(false))
}
}
#endif
Run Code Online (Sandbox Code Playgroud)
ata*_*asa 11
对于您的情况,如果您仍然想初始化您的 Binding 变量,您可以使用:
var binding: Binding = .constant(false)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2878 次 |
| 最近记录: |