SwiftUI ViewModel 发布的属性和绑定

2024-02-11

我的问题可能是误解的结果,但我无法弄清楚,所以这里是:

使用 TextField 等组件或任何其他需要绑定作为输入的组件时

TextField(title: StringProtocol, text: Binding<String>)

还有一个带有 ViewModel 的 View,我很自然地认为我可以简单地传递我的 ViewModel@Published作为绑定的属性:

class MyViewModel: ObservableObject { 
     @Published var title: String
     @Published var text: String
}

// Now in my view
var body: some View {
    TextField(title: myViewModel.title, text: myViewModel.$text)
}

但我显然不能,因为出版商不能充当约束力。据我了解,只有@State财产可以这样做,但不应该所有@State属性仅存在于视图中而不存在于视图模型中?或者我可以做类似的事情:

class MyViewModel: ObservableObject { 
     @Published var title: String
     @State var text: String
}

如果我不能,当我的文本更新时,如何将信息传输到我的 ViewModel?


你就快到了。你只需更换myViewModel.$text with $myViewModel.text.

class MyViewModel: ObservableObject {
    
    var title: String = "SwiftUI"
    
    @Published var text: String = ""
}

struct TextFieldView: View {
    
    @StateObject var myViewModel: MyViewModel = MyViewModel()
    
    var body: some View {
        TextField(myViewModel.title, text: $myViewModel.text)
    }
}

TextField期望一个Binding (for text参数)和StateObject属性包装器负责创建绑定MyViewModel使用动态成员查找的属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SwiftUI ViewModel 发布的属性和绑定 的相关文章

随机推荐

  • 如何在 tkinter 中自动换行小部件?

    几年前我在android中看到过这个函数 布局 但我记不起这个函数名是什么 我需要一个自动替换小部件 如果新小部件的宽度与窗口末尾相交 我想将该小部件移至新行 以下是我的预期输出 我认为 获取宽度并计算新的小部件位置就可以解决这个问题 但是
  • JavaFX 实时时间和日期

    我当前正在使用 JavaFx 构建一个应用程序 该应用程序具有额外的功能 可以在场景的右上角显示当前日期和时间 由于我是 JavaFX 新手 我不知道如何实现这一点 我尝试在 swing 中使用旧代码 但出现 IllegalStateExc
  • 一次对多个 YuvImage 使用 compresstojpeg 时内存不足

    我正在构建一个缓冲应用程序N相机帧 当用户点击按钮时 它会使用所有保存的帧应用效果来保存照片 我正在保存照片并在异步任务 当我执行它时 我会从屏幕上删除所有内容 只留下一个TextView显示保存照片的进度 目前异步任务 doInBackg
  • 使用 useState 和 useContext React Hooks 持久化 localStorage

    我已经设置了一个提供程序来为用户共享一些状态useContext 因此 我试图利用本地存储来保存用户图像 头像等 的一些状态 首先 我尝试保留用户的头像 本质上是从 Express 中保存他们的 ID 然后在调用 Cloudinary 一种
  • 返回 PostgreSQL 中插入的行

    我目前正在开发一个报告生成 servlet 它聚合来自多个表的信息并生成报告 除了返回结果行之外 我还将它们存储到报告表中 以便以后不需要重新生成它们 并且如果擦除它们所提取的表 它们将持续存在 为了执行后者 我有一个以下形式的语句 注意
  • C# 中是否有存储优化的稀疏矩阵实现?

    有没有优化过的存储稀疏矩阵 http en wikipedia org wiki Sparse matrix在C 中的实现 有Math NET http www mathdotnet com 它有一些备用矩阵实施 http nmath so
  • 在Python中将微秒增量转换为各自转换的最佳方法?

    我目前有一个预定义的字典 忽略字母 不过 我希望转换更加稳健 假设输入 33000000 微秒并知道转换为 33 秒 然后 一分钟以上但一小时以下的任何微秒输入都会显示为分钟等 是否可以在不需要此预定义字典的情况下获得此编码 最好是一个函数
  • 如何解决python中pydicom的编码问题

    这是代码 import dicom ds dicom read file FILE PATH print ds Error LookupError unknown encoding ISO 2022 IR 100 当使用 pydicom 查
  • 冻结 EPPlus 中的列(Excel 拆分函数)

    我一直在使用 EPPlus 来生成 Excel 文件 以满足我的项目要求我进行的导出数量 他们想要的大多数导出往往与他们遗留系统中已有的导出完美匹配 然而 其中之一 他们想要不同 他们希望它看起来与遗留系统的导出之一一模一样在他们完成一些典
  • COM + 等待单对象

    在过去的几天里 我一直在努力为一个应用程序找到一个好的架构 经过一番研究后 我终于陷入困境 原因就是 COM 相关应用程序将有多个 GUI 线程 它们将为工作线程安排工作项 工作线程将通过 CoInitialize NULL 初始化 COM
  • 如何将 ng-href 与绝对 url 一起使用?

    我对 AngularJS 仍然很陌生 我有一个问题 我似乎无法找到解决方案 而且我没有时间去研究 Angular 源代码 这是我的场景 我有一些 json 数据 其中包含我想在屏幕上显示的 url 集合 我有一个元素ng repeat li
  • 如何修复这些漏洞? (npm 审核修复未能修复这些漏洞)

    我的项目有 6 个高严重性漏洞 我不知道如何修复它们 npm 审核修复失败 请帮我解决这个问题 我正在安装https www npmjs com package toastr https www npmjs com package toas
  • Delphi:了解构造函数

    我正在寻找理解 virtual override overload 重新介绍 当应用于对象构造函数时 每次我随机添加关键字 直到编译器关闭 并且 在使用 Delphi 开发 12 年之后 我宁愿知道我在做什么 而不是随机尝试 给定一组假设的
  • 弹簧MVC。 POST 表单未绑定

    我有一些简单的 Man 类 其中包含构造函数 getter 和 setter public class Man Size min 3 max 20 message Username must be between 3 and 20 char
  • Symfony2 从 URL 获取路由名称

    好的 你可以通过以下方式获取当前路线名称app request attributes get route 但无法从 url 获取 就像是app request attributes get about 您可以使用Router为此类 服务 p
  • Discord.js 获取具有特定角色的所有成员

    我正在尝试让所有具有特定角色的成员加入 每当我运行该命令时 我只得到我自己和机器人 如果机器人具有该角色 但服务器中还有其他 4 个人具有相同的角色 但他们都没有出现 如果我获取所有成员 他们就会表现得很好 有谁知道为什么会发生这种情况 C
  • WPF 中的全局鼠标挂钩

    我需要获取鼠标在屏幕上的位置NOT在我的应用程序中 我用过全局鼠标和键盘钩子here http www codeproject com Articles 7294 Processing Global Mouse and Keyboard H
  • Julia DataFrames.jl - 使用 NA 过滤数据 (NAException)

    我不知道如何处理NA在 Julia DataFrames 中 例如 使用以下 DataFrame gt import DataFrames gt a DataFrames data 1 2 3 4 5 gt b DataFrames dat
  • JSP Web 应用程序中的国际化?

    在我当前的项目中 我们正在考虑逐步淘汰旧的表示层 并用更现代 更知名的东西取代它 由于各种原因 选择 JSP 作为技术 可能与 Apache Tiles 结合使用 我或许应该提到 如果这很重要的话 我们正在后面使用 Spring 国际化是一
  • SwiftUI ViewModel 发布的属性和绑定

    我的问题可能是误解的结果 但我无法弄清楚 所以这里是 使用 TextField 等组件或任何其他需要绑定作为输入的组件时 TextField title StringProtocol text Binding