我正在尝试在 SwiftUI 中实现以下内容:
struct PersonView: View {
@State private var age: Int? = 0
var body: some View {
VStack {
Text("Just a test")
if let self.age > 0 {
Text("Display Age: \(age)")
} else {
Text("Age must be greater than 0!")
}
}
}
}
但是,在 SwiftUI 中,if let
结果出现以下错误:
包含控制流语句的闭包不能与函数生成器“ViewBuilder”一起使用
因此,在研究了这个主题之后,我发现了一个使用建议.map
打开包装age
选修的。因此,我已修改为内的代码VStack
如下:
Text("Just a test")
self.age.map {elem in
if elem > 0 {
Text("Display Age: \(elem)")
} else {
Text("Age must be greater than 0!")
}
}
在其中包含一个条件.map
然而,闭包会导致调用该函数的行出现以下错误VStack
:
' (ViewBuilder.Type) -> (C0, C1) -> TupleView' 要求 '()' 符合 'View'
类型“()”不符合协议“View”
关于如何克服第二组错误有什么建议吗?或者,是否有另一种方法可以在 SwiftUI 中展开选项并对其进行评估?真的很喜欢 SwiftUI,但不敢相信展开选项一直是一件令人头疼的事情!
对于这种情况,我更喜欢以下方法
struct PersonView: View {
@State private var age: Int? = 0
var body: some View {
VStack {
Text("Just a test")
AgeText
}
}
private var AgeText: some View {
if let age = self.age, age > 0 {
return Text("Display Age: \(age)")
} else {
return Text("Age must be greater than 0!")
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)