我如何在 SwiftUI 中获得 "empty view"?

How do I have an "empty view" in SwiftUI?

所以我想要一个有条件地呈现的视图,具体取决于我的模型的状态。如果每个案例都有要呈现的视图,我知道如何执行此操作,但是我如何处理在某些情况下我想显示 no 视图的情况?

例如:

struct MyView: View {

    enum ViewState {
        case A, B, C
    }

    let state: ViewState

    var view: some View {
        switch state {
            case .A:
                Text("A State")
            case .B:
                Text("B State")
            case .C:
                // empty
        }
    }
}



您可以使用 EmptyView() 并将您的视图标记为 @ViewBuilder var view: some View

您可以使用 EmptyView 和 (!) 将 view 属性 标记为 ViewBuilder,如以下最终示例所示:

struct MyView: View {

    enum ViewState {
        case A, B, C
    }

    let state: ViewState

    @ViewBuilder var view: some View {    // << here !!
        switch state {
            case .A:
                Text("A State")
            case .B:
                Text("B State")
            case .C:
                EmptyView()         // << here !!
        }
    }

    var body: some View { // replicated for demo
        self.view
     }
}

使用 Xcode 13.2

测试
struct MyView: View {

    enum ViewState {
        case A, B, C
    }

    let state: ViewState

    var text: String {
        switch state {
            case .A:
               "A State"
            case .B:
                "B State"
            case .C:
                ""
        }
    }

    var view: some View {
       Text(text)
    }
}