View 试图通过绑定<;布尔>;将变量转换为视图?

View 试图通过绑定<;布尔>;将变量转换为视图?,view,binding,swiftui,data-transfer,View,Binding,Swiftui,Data Transfer,因此,我有一个绑定变量,它在一个类中声明为: @Binding var variableName: Bool 当调用某个函数时,我返回一个视图。我希望通过以下方式将注释传递到该视图中: return CustomView(variableName: $variableName) 这是正确的吗?我不确定。此外,在视图本身内部,我不完全确定如何正确地进行初始化。最终目标是能够从视图的函数中访问variableName的值。无论如何,我尝试在CustomView类中声明以下内容: @Binding

因此,我有一个绑定变量,它在一个类中声明为:

@Binding var variableName: Bool
当调用某个函数时,我返回一个视图。我希望通过以下方式将注释传递到该视图中:

return CustomView(variableName: $variableName)
这是正确的吗?我不确定。此外,在视图本身内部,我不完全确定如何正确地进行初始化。最终目标是能够从视图的函数中访问variableName的值。无论如何,我尝试在CustomView类中声明以下内容:

@Binding var variableName: Bool

对于初始化,我不确定是否应该将变量名传递到参数中(如果我应该这样做,我也不知道怎么做。我也不知道我是否应该以某种方式用self.variableName=value进行初始化…只是要明确一点,目标是在初始化后访问variableName的值。如果我可以添加更多代码使其更易于理解,请让我知道!

您想要实现的目标并不明确,但有一个l看看下面的代码:

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")
    }
}

因此,您可以使用
已发布的
值来代替
绑定
,而使用
可观察对象

您想要实现的目标并不明确,但请查看下面的代码:

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")
    }
}

因此,您可以使用
已发布的
值来代替
绑定
,而使用
可观察对象

提供的声明本身是正确的,但可能由于被调用或内部代码而不起作用。您会显示演示代码以供发布吗?提供的声明本身是正确的,但可能由于被调用或内部代码而不起作用副代码。你会为这个问题展示演示代码吗?哦,好的,谢谢!第一个实现成功了,但是如果你认为第二个实现更干净,我想更深入地了解它。你有什么资源可以学习更多关于具体使用@Published变量和observeObject协议的知识吗?啊,太好了!那么,如果你有一个complex模型包含不止一个bool或int,然后将模型创建为ObserveObject更有意义,因为您可以发布与状态变量工作非常类似的值。它们只是包装在ObserveObject中,以便可以将它们一起传递给其他视图。然而,如果您在视图中只需要一个简单的变量,则当State更好时,您可以使用绑定将状态传递给其他视图。这里有一篇文章:更多源代码:顺便说一句,如果您对答案满意,您可以选择它作为正确答案:)哦,好的,谢谢!第一个实现成功了,但是如果你认为第二个实现更干净,我想更深入地了解一下。你有没有资源来学习更多关于具体使用@Published variables和observeObject协议的知识?啊,太好了!那么,如果你有一个复杂的模型,其中包含的不仅仅是bool或一个int,然后创建一个模型作为一个ObserveObject更有意义,因为你可以发布与状态变量非常相似的值。它们只是包装在一个ObserveObject中,这样就可以将它们一起传递给其他视图。但是,如果你在一个视图中只需要一个简单的变量,那么状态更好,你可以传递状态通过使用绑定来访问其他视图。这里有一篇文章:耦合更多来源:顺便说一句,如果您对答案满意,您可以选择它作为正确答案:)