Ios 如何在SwiftUI中基于绑定枚举更改视图样式?

Ios 如何在SwiftUI中基于绑定枚举更改视图样式?,ios,swift,swiftui,Ios,Swift,Swiftui,我想更改以下文本的样式: 看法 基于“我的模型”文件中的枚举: 模型 但是,上述代码会导致两个错误,以防止出现这种情况: 我的扩展显示未解析标识符“$status”的使用 我的枚举显示未声明类型“Color”的使用 这些阻止了我执行这个绑定方法来更改文本的样式 你知道我怎样才能解决这个问题吗 您的文本扩展无法识别$status,因为它是在另一个作用域中定义的。 您的状态枚举无法识别颜色,因为您可能没有导入SwiftUI。 您的文本扩展无法识别$status,因为它是在另一个作用域中定义的。 您的

我想更改以下文本的样式:

看法

基于“我的模型”文件中的枚举:

模型

但是,上述代码会导致两个错误,以防止出现这种情况:

我的扩展显示未解析标识符“$status”的使用 我的枚举显示未声明类型“Color”的使用 这些阻止了我执行这个绑定方法来更改文本的样式

你知道我怎样才能解决这个问题吗

您的文本扩展无法识别$status,因为它是在另一个作用域中定义的。 您的状态枚举无法识别颜色,因为您可能没有导入SwiftUI。 您的文本扩展无法识别$status,因为它是在另一个作用域中定义的。 您的状态枚举无法识别颜色,因为您可能没有导入SwiftUI。
这是一个固定变量。使用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)
    }
}