Swiftui 导致缺少导航链接初始化的状态变量

Swiftui 导致缺少导航链接初始化的状态变量,swiftui,Swiftui,我在aboutView(ContentView底部)的导航链接中遇到一些奇怪的错误: 由于“私有”保护级别,aboutView的初始值设定项不可访问 调用中缺少参数“useHomeCur”的参数 期望表达式 Xcode还建议我在ContentView中插入'useHomeCur' 我不会在任何其他视图中看到这些错误。 aboutView.swift中未出现任何错误。它的行为就像aboutView是ContentView的子视图一样。它希望我在ContentView中定义一个aboutView状态

我在aboutView(ContentView底部)的导航链接中遇到一些奇怪的错误:

  • 由于“私有”保护级别,aboutView的初始值设定项不可访问
  • 调用中缺少参数“useHomeCur”的参数
  • 期望表达式 Xcode还建议我在ContentView中插入'useHomeCur'
  • 我不会在任何其他视图中看到这些错误。 aboutView.swift中未出现任何错误。它的行为就像aboutView是ContentView的子视图一样。它希望我在ContentView中定义一个aboutView状态参数。为什么?如果我在aboutView中文本输出状态参数和选项,那么效果会很好

    我还尝试了:.navigationBarItems(尾部:NavigationLink(目标:aboutView()){ 文本(“关于”)。此编码将删除预期的表达式错误

    iOS 14.0 Xcode 12.0.1加伦

    struct ContentView: View {
    
        @State private var activateAbout = false
        
        var body: some View {
            
            NavigationView {
                VStack {
                    
                       ... menu navigation links
                }
                .font(.title)
                .navigationBarTitle("blah blah blah", displayMode: .inline)
                .background(
                    // hide programmatically activated link here !!
                    NavigationLink(destination: aboutView(), isActive: $activateAbout) { EmptyView()
                )
                        .navigationBarItems(trailing: Button( action: {
                        // not add - only activate it here, otherwise it will not work
                            self.activateAbout = true
                        }) {
                            Text("About")
                        }
                    }           
                }
                
                .onAppear(perform: loadCurrencies)
            }
        }
    }
    
    以下是aboutView>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    struct aboutView: View {
        
        @EnvironmentObject var userData: UserData
        @State private var useHomeCur: Bool
        
        var body: some View {
    
            NavigationView {
            Form {
                    VStack (alignment: .center) {
                        Text("blah blah blah")
                        Text("blah blah blah")
                    }.font(.body)
                
                    Toggle(isOn: $useHomeCur) {
                        Text("Use this fancy feature")
                   }.padding()
    
               NavigationLink(destination: docView()) {
                    Text("Documentation")
                }
            }.navigationBarTitle("About", displayMode: .inline)
      
            }
        }
    }
    

    状态变量用于内部视图,因此应该在内部初始化(最好是将其私有化)

  • 内部初始化的变体
  • struct aboutView:View{
    @环境对象变量userData:userData
    @国家私有变量useHomeCur:Bool=false//
    
    struct aboutView: View {
        
        @EnvironmentObject var userData: UserData
        @State private var useHomeCur: Bool = false    // << here !!
    
    struct aboutView: View {
        
        @EnvironmentObject var userData: UserData
        @State private var useHomeCur: Bool
    
        init(useHomeCur: Bool = false) {
           _useHomeCur = State(initialValue: useHomeCur)    // << here !!
        }
        ...