Ios 如何在SwiftUI中基于绑定枚举更改视图样式?
我想更改以下文本的样式: 看法 基于“我的模型”文件中的枚举: 模型 但是,上述代码会导致两个错误,以防止出现这种情况: 我的扩展显示未解析标识符“$status”的使用 我的枚举显示未声明类型“Color”的使用 这些阻止了我执行这个绑定方法来更改文本的样式 你知道我怎样才能解决这个问题吗 您的文本扩展无法识别$status,因为它是在另一个作用域中定义的。 您的状态枚举无法识别颜色,因为您可能没有导入SwiftUI。 您的文本扩展无法识别$status,因为它是在另一个作用域中定义的。 您的状态枚举无法识别颜色,因为您可能没有导入SwiftUI。Ios 如何在SwiftUI中基于绑定枚举更改视图样式?,ios,swift,swiftui,Ios,Swift,Swiftui,我想更改以下文本的样式: 看法 基于“我的模型”文件中的枚举: 模型 但是,上述代码会导致两个错误,以防止出现这种情况: 我的扩展显示未解析标识符“$status”的使用 我的枚举显示未声明类型“Color”的使用 这些阻止了我执行这个绑定方法来更改文本的样式 你知道我怎样才能解决这个问题吗 您的文本扩展无法识别$status,因为它是在另一个作用域中定义的。 您的状态枚举无法识别颜色,因为您可能没有导入SwiftUI。 您的文本扩展无法识别$status,因为它是在另一个作用域中定义的。 您的
这是一个固定变量。使用Xcode 11.4/iOS 13.4进行测试
enum Status {
case offline(color: Color = .black)
case loading(color: Color = .gray)
case online(color: Color = .green)
var color: Color {
switch self {
case .offline(let color):
return color
case .loading(let color):
return color
case .online(let color):
return color
}
}
}
struct StatusView: View {
@State var status: Status = .offline()
var body: some View {
Button(action: { self.goOnline() }){
Text("Offline")
.statusButtonStyle(color: status.color)
}.padding().background(Color.black).opacity(0.7).cornerRadius(40.0)
}
}
extension Text {
func statusButtonStyle(color: Color) -> Text {
return self
.foregroundColor(color)
}
}
这是一个固定变量。使用Xcode 11.4/iOS 13.4进行测试
enum Status {
case offline(color: Color = .black)
case loading(color: Color = .gray)
case online(color: Color = .green)
var color: Color {
switch self {
case .offline(let color):
return color
case .loading(let color):
return color
case .online(let color):
return color
}
}
}
struct StatusView: View {
@State var status: Status = .offline()
var body: some View {
Button(action: { self.goOnline() }){
Text("Offline")
.statusButtonStyle(color: status.color)
}.padding().background(Color.black).opacity(0.7).cornerRadius(40.0)
}
}
extension Text {
func statusButtonStyle(color: Color) -> Text {
return self
.foregroundColor(color)
}
}
enum Status {
case offline(color: Color = .black)
case loading(color: Color = .gray)
case online(color: Color = .green)
var color: Color {
switch self {
case .offline(let color):
return color
case .loading(let color):
return color
case .online(let color):
return color
}
}
}
struct StatusView: View {
@State var status: Status = .offline()
var body: some View {
Button(action: { self.goOnline() }){
Text("Offline")
.statusButtonStyle(color: status.color)
}.padding().background(Color.black).opacity(0.7).cornerRadius(40.0)
}
}
extension Text {
func statusButtonStyle(color: Color) -> Text {
return self
.foregroundColor(color)
}
}