SwiftUI:Toggle 和 Button 的奇怪错误
SwiftUI: strange errors with Toggle and Button
我对这段代码有疑问。错误消息似乎不对,代码应该是正确的。但它不起作用,我不知道原因是什么。谁能给我一个提示?首先,我用文本而不是变量尝试了这个。由于我更改为变量,因此无法正常工作。
目标:我想在点击按钮时显示 '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()
}
}
在
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")
}
而不是
我对这段代码有疑问。错误消息似乎不对,代码应该是正确的。但它不起作用,我不知道原因是什么。谁能给我一个提示?首先,我用文本而不是变量尝试了这个。由于我更改为变量,因此无法正常工作。 目标:我想在点击按钮时显示 '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()
}
}
在
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")
}
而不是