试图将 Binding<Bool> 变量传递到视图中?
Trying to pass a Binding<Bool> variable into a view?
所以我有一个在 class 中声明的绑定变量:
@Binding var variableName: Bool
我在调用某个函数时返回一个视图。我想将注释传递到该视图中:
return CustomView(variableName: $variableName)
这是正确的吗?我不确定。此外,在视图本身内部,我不完全确定如何正确进行初始化。最终目标是能够从视图的函数中访问 variableName 的值。无论如何,我尝试在 CustomView class:
中声明以下内容
@Binding var variableName: Bool
对于初始化,我不确定是否应该将变量名传递给参数(如果应该,我不确定如何。我也不知道是否应该以某种方式初始化self.variableName = value...明确一点,目标是在初始化后访问 variableName 的值。如果我可以添加更多代码以使其更易于理解,请告诉我!
不太清楚你想要实现什么,但是看看下面的代码:
import SwiftUI
struct ParentView: View {
@Binding var customVariable: Bool
var body: some View {
VStack {
Toggle(isOn: $customVariable) {
Text("Show/Hide Custom View")
}
if $customVariable.wrappedValue {
CustomView(customVariable: $customVariable)
}
}
}
}
struct CustomView: View {
@Binding var customVariable: Bool
init(customVariable: Binding<Bool>) { // You don't need an initializer here, it is just to demonstrate how you can use it for Binding values
_customVariable = customVariable
}
var body: some View {
Text("Custom View")
}
}
然而,在SwiftUI中协调模型和视图的更好方法如下所示:
import SwiftUI
class CustomModel: ObservableObject {
@Published var shouldShowCustomView: Bool = false
}
struct ParentView: View {
@ObservedObject var model: CustomModel
var body: some View {
VStack {
Toggle(isOn: $model.shouldShowCustomView) {
Text("Show/Hide Custom View")
}
if model.shouldShowCustomView {
CustomView()
.environmentObject(model)
}
}
}
}
struct CustomView: View {
@EnvironmentObject var model: CustomModel
var body: some View {
Text("Custom View")
}
}
因此,您可以使用具有 Published
值的 ObservableObject
而不是 Binding
。
所以我有一个在 class 中声明的绑定变量:
@Binding var variableName: Bool
我在调用某个函数时返回一个视图。我想将注释传递到该视图中:
return CustomView(variableName: $variableName)
这是正确的吗?我不确定。此外,在视图本身内部,我不完全确定如何正确进行初始化。最终目标是能够从视图的函数中访问 variableName 的值。无论如何,我尝试在 CustomView class:
中声明以下内容@Binding var variableName: Bool
对于初始化,我不确定是否应该将变量名传递给参数(如果应该,我不确定如何。我也不知道是否应该以某种方式初始化self.variableName = value...明确一点,目标是在初始化后访问 variableName 的值。如果我可以添加更多代码以使其更易于理解,请告诉我!
不太清楚你想要实现什么,但是看看下面的代码:
import SwiftUI
struct ParentView: View {
@Binding var customVariable: Bool
var body: some View {
VStack {
Toggle(isOn: $customVariable) {
Text("Show/Hide Custom View")
}
if $customVariable.wrappedValue {
CustomView(customVariable: $customVariable)
}
}
}
}
struct CustomView: View {
@Binding var customVariable: Bool
init(customVariable: Binding<Bool>) { // You don't need an initializer here, it is just to demonstrate how you can use it for Binding values
_customVariable = customVariable
}
var body: some View {
Text("Custom View")
}
}
然而,在SwiftUI中协调模型和视图的更好方法如下所示:
import SwiftUI
class CustomModel: ObservableObject {
@Published var shouldShowCustomView: Bool = false
}
struct ParentView: View {
@ObservedObject var model: CustomModel
var body: some View {
VStack {
Toggle(isOn: $model.shouldShowCustomView) {
Text("Show/Hide Custom View")
}
if model.shouldShowCustomView {
CustomView()
.environmentObject(model)
}
}
}
}
struct CustomView: View {
@EnvironmentObject var model: CustomModel
var body: some View {
Text("Custom View")
}
}
因此,您可以使用具有 Published
值的 ObservableObject
而不是 Binding
。