SwiftUI _ConditionalContent 类型

14 min read

SwiftUI的_ConditionalContent是一种泛型类型,用于在视图中指示一个条件内容。

它的定义如下:

public enum _ConditionalContent<TrueContent: View, FalseContent: View> {
    case trueContent(TrueContent)
    case falseContent(FalseContent)
}

可以看到,它有两个泛型参数:TrueContentFalseContent

根据条件,它可以包含两种类型的内容:TrueContent和FalseContent。

例如,我们可以使用它来定义一个视图,根据某些条件条件选择显示其中一个View或另一个View:

struct ContentView: View {
    @State var showRedView = true
    var body: some View {
        VStack {
            Toggle(isOn: $showRedView) {
                Text("Toggle")
            }
            _ConditionalContent(
                condition: showRedView,
                trueContent: {
                    Color.red
                },
                falseContent: {
                    Color.blue
                }
            )
        }
    }
}

上述示例中,我们首先定义了一个布尔变量showRedView,以此判断应该显示红色视图还是蓝色视图。

然后使用 _ConditionalContent 来定义一个条件性的视图,当 showRedViewtrue 显示红色视图,否则显示蓝色视图。