SwiftUI:切换和按钮的奇怪错误
Posted
技术标签:
【中文标题】SwiftUI:切换和按钮的奇怪错误【英文标题】:SwiftUI: strange errors with Toggle and Button 【发布时间】:2020-02-24 15:06:34 【问题描述】:我对这段代码有疑问。错误消息似乎是错误的,代码应该是正确的。但它不起作用,我不知道原因是什么。谁能给我一个提示?首先,我尝试使用 Text 而不是变量。由于我更改为变量,因此它不起作用。 目标:如果点击按钮并从该视图取回一些数据,我想显示“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】:在
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")
改为
【讨论】:
谢谢。我有这些课程,但我想如果允许count += 1
,这应该也是可能的。谢谢你的解释。
@Enrico 你不能仅仅因为闭包是 VStack 结构初始化器的一部分而执行你的代码。
@Enrico 如果源代码中有count += 1这样的语句,这不是因为那里使用了什么表达式,而是在哪里。以上是关于SwiftUI:切换和按钮的奇怪错误的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI ScrollView、GeometryReader 和 Button = 奇怪的行为
iphone - UIActionSheet 和 UITabBar 之间的奇怪错误