SwiftUI: странные ошибки с Toggle и Button - PullRequest
0 голосов
/ 24 февраля 2020

У меня проблема с этим кодом. Сообщения об ошибках кажутся неправильными, код должен быть правильным. Но это не сработает, и я понятия не имею, в чем причина. Кто-нибудь может дать мне подсказку? Сначала я попробовал это с текстом вместо переменных. Так как я изменил на Переменные, это не будет работать. Цель: я хочу отобразить «DetailView», если была нажата кнопка, и получить некоторые данные из этого представления. Данные, введенные с помощью 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()
    }
}

1 Ответ

1 голос
/ 24 февраля 2020

в

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

вы не можете выполнить какой-либо обычный код swift!

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

вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...