如何将数据从父模型类传递到 SwiftUI 中的子视图

阿努杰·阿罗什

我在 ContentView 类中有我的主视图,我在 ContentViewModel 类中进行网络调用,并使用响应更新类调用 User。

我的 ContentView 有几个子视图,例如 HeaderView。当我从 API 响应更新 User 类属性时,我还想更新 HeaderView 中定义的 UI 元素。如何将数据从 ContentViewModel 类传递到我的子视图 (HeaderView)?


我可以通过设置 ContentViewModel 类 ObservableObject 来更新非常简单的 ContentView 元素

class ContentViewModel: ObservableObject {

并发布了 User 对象

@Published var user = User()

并在同一 ContentViewModel 中收到 API 响应后更新用户的属性

self.user.name = name

我的 ContentView 与它的模型类有如下关系

@StateObject private var contentViewModel = ContentViewModel()

和 UI 更新如下

Text("My name \(contentViewModel.user.name)")

这就是 ContentView 的工作场景。但我需要将值传递给 HeaderView()。我的用户类如下

import Foundation

class User {
    var name = ""
// more attributes
}
工作犬

这是我经常使用的模式:(注意没有私有变量)

struct ContentView: View {
    @StateObject var contentViewModel = ContentViewModel()
    ...
    var body: some View {
        ...
        HeaderView(contentViewModel: contentViewModel)
    }
}

struct HeaderView: View {
    @ObservedObject var contentViewModel: ContentViewModel

    var body: some View {
        ...
        Text("My name \(contentViewModel.user.name)")
    }
}

struct User {
    var name = ""
// more attributes
}

您可以使用与“.environment(...)”模式相同的想法将 ContentViewModel 传递给所有子视图。

编辑:正如@Asperi 用户所建议的那样,应该将其设为一个结构体。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将数据从 SwiftUI 中的 ContentView 传递到子视图

如何将数据从viewController传递到swiftUI视图?

如何将数据从模态视图列表传递到 SwiftUI 中的父视图?

如何在 SwiftUI 中重置子视图?

如何在SwiftUI中访问子视图?

如何在SwiftUI中访问子视图?

如何将视图模型中的功能绑定到swiftui中的自定义视图?

iOS SwiftUI:子视图@ObservedObject中的数据流

SwiftUI 如何在 HStack 中对齐子视图

如何从TabView的子视图导航回SwiftUI中的TabView?

如何将值从EnvironmentObject传递到SwiftUI中的类实例?

将数据从SwiftUI视图传递到UIViewController

如何将模型中的 Float 值绑定到 SwiftUI 视图中的 @Binding:Float 属性

SwiftUI:如何将视图与HStack的子视图对齐?

如何将核心数据传递到SwiftUI TextField中

当变量嵌套在对象中时,如何通过SwiftUI将绑定传递给子视图?

在Swiftui中,如何最小化将函数传递给子视图

如何在 SwiftUI 中从父视图更改子@State 属性值?

在SwiftUI中拥抱子视图

SwiftUI 将数据传递给子视图

如何将数据从父视图控制器传递到子容器视图控制器

如何在SwiftUI中创建具有可变数量的子视图的视图?

使用父视图和子视图时如何在 SwiftUI 中给出条件?

如何将 SwiftUI 中的静态值从一个视图传递到另一个视图?

如何将数据从多个模型传递到视图?

SwiftUI:错误的数组传递给子视图

使用模型将数据传递到另一个视图 - SwiftUI

SwiftUI发送按钮点击到子视图

我可以将 Bool 作为环境对象传递给 SwiftUI 中的子视图吗?