我对此代码有疑问。错误消息似乎是错误的,该代码应该是正确的。但这是行不通的,我也不知道是什么原因。谁能给我提示吗?首先,我尝试使用文本而不是变量进行此操作。由于我更改为“变量”,因此将无法使用。
目标:如果点击了一个按钮,我想显示“DetailView”,并从该 View 中获取一些数据。使用Toggle&PickerView输入的数据(由于此错误,我尚未实现Picker。)
这是代码:

import SwiftUI

class HandoverData: ObservableObject{
    @Published var Befehl: String = ""
    @Published var WebLnk: String = ""
    @Published var bOnOff: Bool = false
}

struct ContentView: View {
    @State private var bToGo: Bool
    @EnvironmentObject var HandOverData: HandoverData

    var body: some View {
        VStack{
            Text("Hello, World!")
            self.HandOverData.Befehl = "Text"
            self.HandOverData.WebLnk = "www.heise.de"
            Button(action: { //<= Generic parameter 'Label' could not be inferred
                self.bToGo.toggle()
                }) {
                    Text(HandOverData.Befehl)
            }.sheet(isPresented: self.$bToGo) {
                DetailView(GetDat: HandOverData)
            }
        }
    }
}

struct DetailView: View{
    @ObservedObject var GetDat: HandoverData

    var body: some View{
        VStack{
            Text(GetDat.Befehl)
            Spacer()
            Toggle(isOn: self.GetDat.bOnOff) { <= 'Bool' is not convertible to 'Binding<Bool>'
                Text("An/Aus")
            }
            Spacer()
            Button(action: {
                let http = "https://"
                let url: NSURL = URL(string: http + self.GetDat.WebLnk)! as NSURL
                UIApplication.shared.open(url as URL)
            }) {
                Text(GetDat.WebLnk)
            }
            Spacer()
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

最佳答案


var body: some View {
        VStack{
            Text("Hello, World!")
            self.HandOverData.Befehl = "Text"
            self.HandOverData.WebLnk = "www.heise.de"
            Button(action: { //<= Generic parameter 'Label' could not be inferred
                self.bToGo.toggle()
                }) {
                    Text(HandOverData.Befehl)
            }.sheet(isPresented: self.$bToGo) {
                DetailView(GetDat: HandOverData)
            }
        }
    }

您将无法执行任何普通的快速代码!
self.HandOverData.Befehl = "Text"
self.HandOverData.WebLnk = "www.heise.de"

首先请参阅有关SwiftUI的一些初学者教程。

诠释这部分
Toggle(isOn: self.GetDat.bOnOff) { <= 'Bool' is not convertible to 'Binding<Bool>'
    Text("An/Aus")
 }

采用
Toggle(isOn: self.$GetDat.bOnOff) { <= 'Bool' is not convertible to 'Binding<Bool>'
    Text("An/Aus")
 }

代替

关于compiler-errors - SwiftUI : strange errors with Toggle and Button,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60378690/

10-14 16:56