代码之家  ›  专栏  ›  技术社区  ›  lhunt

'调用中缺少参数'hideNew'

  •  -1
  • lhunt  · 技术社区  · 2 年前

    我试图切换Bool变量,以便在单击作为按钮的图像时可以取消隐藏视图。我不确定问题是什么,因为据我所知,一切都是对的。再说一遍,我对斯威夫特还很陌生。这是我的代码:

    struct ContentView: View {
        @State private var hideNew: Bool = true
        var body: some View {
            ZStack {
                VStack {
                    HeaderView() //Error shows here: 'Missing argument parameter 'hideNew' in call'
                        .padding(.bottom, -1.5)
                    ScrollView {
                        CountdownView()
                    }
                    Spacer()
                }
                .frame(width: 600, height: 500)
                if hideNew == false {
                    NewDateView()
                }
            }
        }
    }
    
    //  The view for the header section
    struct HeaderView: View {
        var buttonSize: CGFloat = 25
        @Binding var hideNew: Bool
        var body: some View {
            Spacer()
                .frame(maxHeight: 10)
            HStack {
                Spacer()
                Text("Date Countdown")
                    .font(.largeTitle)
                    .padding(.trailing, -buttonSize)
                Spacer()
                Image(systemName: "plus")
                    .padding(.trailing, 10)
                    .frame(width: buttonSize, height: buttonSize)
                    .onTapGesture {
                        hideNew.toggle() //This is what I assume the issue is, but I don't actually know what's wrong.
                    }
            }
            Spacer()
                .frame(height: 10)
            ExtendedDivider()
                .frame(height: 1.5)
        }
    }
    

    任何帮助都将不胜感激。 干杯

    1 回复  |  直到 2 年前
        1
  •  0
  •   Raja Kishan    2 年前

    您的代码中有两个错误。

    1. 你必须绑定(通过) hideNew var至 HeaderView
    HeaderView(hideNew: $hideNew) //Error shows here: 'Missing argument parameter 'hideNew' in call'
    
    1. 你的 if 条件是错误的。您正在创建的新对象 HeaderView公司 这是毫无意义的。
    // Other Code
    if hideNew == false {
       NewDateView()
    }
    // Other Code