private var titleTextFieldStyle: TextFieldStyle {
get {
isEditing ? RoundedBorderTextFieldStyle() : DefaultTextFieldStyle()
}
}
使用三元运算符和计算概念返回样式的正确方法是什么。我在这里做错了什么?
private var titleTextFieldStyle: TextFieldStyle {
get {
isEditing ? RoundedBorderTextFieldStyle() : DefaultTextFieldStyle()
}
}
使用三元运算符和计算概念返回样式的正确方法是什么。我在这里做错了什么?
一年后,我也找不到这样做的好方法。
问题是 RoundedBorderTextFieldStyle() 和 DefaultTextFieldStyle() 不是同一类型。实际上它们是相同的类型,所以我不知道为什么这不起作用。
我已经为 Text() 构建了自己的 textStyle 修饰符,并且我使用枚举作为 .textStyle() 的参数,这样你就不会遇到这些问题。
我对 TextField 的唯一解决方案是复制正文中的代码:
var body: some View {
Group {
if isEditing {
TextField("Editing", value: $text)
.textStyle(RoundedBorderTextFieldStyle())
}
else {
TextField("Not Editing", value: $text)
.textStyle(DefaultTextFieldStyle())
}
}
}
这是伪代码,但如果我理解正确,你可以像这样安慰:
let result = isEditing ? RoundedBorderTextFieldStyle() : DefaultTextFieldStyle()
return result