-1
private var titleTextFieldStyle: TextFieldStyle  {
    get {
        isEditing ? RoundedBorderTextFieldStyle() : DefaultTextFieldStyle()
    }
}

使用三元运算符和计算概念返回样式的正确方法是什么。我在这里做错了什么?

4

2 回答 2

0

一年后,我也找不到这样做的好方法。

问题是 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())
        }
    }
}
于 2020-09-15T01:53:20.140 回答
-1

这是伪代码,但如果我理解正确,你可以像这样安慰:

let result = isEditing ? RoundedBorderTextFieldStyle() : DefaultTextFieldStyle()
return result 
于 2019-10-12T17:00:18.253 回答