美文网首页
SwiftUI:用枚举切换视图状态

SwiftUI:用枚举切换视图状态

作者: 韦弦Zhy | 来源:发表于2020-08-13 15:21 被阅读0次

\color{red}{\Large \mathbf{Hacking \quad with \quad iOS: SwiftUI \quad Edition}}

{\Large \mathbf{Bucket \ List}}

您已经了解了如何使用常规Swift条件来呈现一种视图或另一种视图,并且我们查看了以下方式的代码:

Group {
    if Bool.random() {
        Rectangle()
    } else {
        Circle()
    }
}

条件视图特别有用的地方是当我们想要显示几种不同状态中的一种时,如果我们正确地计划它,我们可以使我们的视图代码小并且易于维护——这是一种开始训练您的大脑思考SwiftUI结构的好方法。

此解决方案分为两部分。首先是为要表示的各种视图状态定义一个枚举。例如,您可以将其定义为嵌套枚举:

enum LoadingState {
    case loading, success, failed
}

接下来,为这些状态创建单独的视图。我将在这里使用简单的文本视图,但是它们可以容纳任何内容:

struct LoadingView: View {
    var body: some View {
        Text("Loading...")
    }
}

struct SuccessView: View {
    var body: some View {
        Text("Success!")
    }
}

struct FailedView: View {
    var body: some View {
        Text("Failed.")
    }
}

如果需要,这些视图可以嵌套,但不一定必须嵌套——这实际上取决于您是否打算在其他地方使用它们以及应用程序的大小。

有了这两部分,我们现在可以有效地将ContentView用作简单的包装器,以跟踪当前应用程序状态并显示相关的子视图。这意味着给它一个属性来存储当前的LoadingState值:

var loadingState = LoadingState.loading

然后使用代码显示其主体属性,该代码根据枚举值显示正确的视图,如下所示:

Group {
    if loadingState == .loading {
        LoadingView()
    } else if loadingState == .success {
        SuccessView()
    } else if loadingState == .failed {
        FailedView()
    }
}

使用这种方法,我们的ContentView不会随着更多的内容和代码添加到视图中而失控,实际上它甚至不知道加载,成功或失败具体的样子。

译自 Switching view states with enums

相关文章

  • SwiftUI:用枚举切换视图状态

    您已经了解了如何使用常规Swift条件来呈现一种视图或另一种视图,并且我们查看了以下方式的代码: 条件视图特别有用...

  • 为小组件构建 SwiftUI 视图

    为小组件构建 SwiftUI 视图为小组件构建 SwiftUI 视图

  • SwiftUI:GeometryReader

    SwiftUI视图布局取决于每个视图状态。这种状态由内部属性、外部环境值等组成。 当涉及到高级自定义布局时,有时视...

  • 3DMAX快捷键

    视图操作 放大选中的视图:Alt+W 切换到顶视图:T 切换到透视图:P 切换到前视图:F 切换到左视图:L 切换...

  • SwiftUI:修改程序状态

    在SwiftUI开发人员中有一种说法,我们的“视图是其状态的函数(views are a function of ...

  • Effective Objective-C 2.0读书笔记(二)

    3.用枚举表示状态,选项,状态码 用枚举来表示状态机的状态,传递给方法的选项以及状态码等值时,能使这些状态更加通俗...

  • 编写高质量iOS代码(五)

    用枚举表示状态,选项,状态码 枚举只是一种常量的命名方式。例如枚举表示“套接字链接”的状态: 由于每种状态都用一个...

  • SwiftUI TextField高级用法之限制文本TextFi

    实战需求 SwiftUI TextField高级用法之限制文本TextField视图中的字符数 有时,您需要限制用...

  • 自定义多状态View

    一个支持多种状态的自定义View,可以方便的切换到: 加载中视图 错误视图 空数据视图 网络异常视图 内容视图 G...

  • [SwiftUI练级-1]--修改程序状态

    [SwiftUI练级-1]--修改程序状态 坊间流传着“视图是它们状态的函数”的说法,这个描述一开始对你来说可能没...

网友评论

      本文标题:SwiftUI:用枚举切换视图状态

      本文链接:https://www.haomeiwen.com/subject/ikxsdktx.html