如何在 SwiftUI 中的 foreach 循环中设置切换状态

2023-11-24

当我尝试在字典的值循环内设置显示切换时,我从错误消息中得到的帮助很少。

如果我取消注释下面的 3 行注释代码,并尝试为循环中的每个属性添加切换,则会收到以下错误:

无法将类型“HStack, Text, ConditionalContent)>>”的值转换为闭包结果类型“_”

import SwiftUI

struct properties {
    var id : Int
    var property : String
    var isOn : Bool
}

struct ContentView: View {

    @State var propertyValues: [properties] = [properties(id: 1, property: "DemoData", isOn: true),
                                                 properties(id: 2, property: "ShowLocalEvents", isOn: false)]

    var body: some View {
        NavigationView {
            VStack {
                List {
                    ForEach(propertyValues.identified(by: \.id)) { propertyValue in
                        HStack {
//                            Toggle(isOn: propertyValue.isOn) {
//                                Text("")
//                            }
                            Text("\(propertyValue.property)")
                            if propertyValue.isOn {
                                Text("On")
                            } else {
                                Text("Off")
                            }
                        }
                    }
                }
            }
        }
    }
}

这里的问题是初始化器Toggle(isOn:label:)需要一个Binding<Bool>为其isOn参数而不仅仅是一个Bool. A Binding<_>是一种可读可写的属性“视图”,允许控件更新它不拥有的值,并将这些更改传播给任何人does拥有该财产。

编辑:我让这个变得比需要的更复杂。以下作品:

ForEach($propertyValues.identified(by: \.id.value)) { (propertyValue: Binding<properties>) in
    HStack {
        Toggle(isOn: propertyValue.isOn) {
            Text("")
        }
        // ...
    }
}

通过使用$propertyValues,我们正在访问一个Binding数组本身,它被转换为每个元素的绑定。

EDIT:

为了使上述工作正常,您需要添加.value在正文中的几个位置,以便您指的是实际值而不是值的绑定。

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

如何在 SwiftUI 中的 foreach 循环中设置切换状态 的相关文章

随机推荐

  • 如何使用 C# 以编程方式将证书安装到本地计算机存储中?

    我有一个通过 MakeCert 生成的证书 我想通过 PeerTrust 将此证书用于 WCF 消息安全 如何使用 C 或 NET 以编程方式将证书安装到 受信任的人 本地计算机证书存储中 我有一个 CER 文件 但也可以创建一个 PFX
  • ASP.NET MVC 3 通用显示模板

    我刚刚开始使用 ASP NET MVC 3 的项目 我正在现有的对象系统之上进行构建 因此我要做的第一件事就是为现有的各种类型定义显示和编辑器模板 在 MVC 中是否可以使用通用参数定义 DisplayTemplate 例如 我们有一个Bi
  • asp.net MVC3 和 jquery AJAX 教程 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我需要一本非常详细的电子书
  • 在十六进制数组中打印字符缓冲区

    我正在将 512 个字符读入缓冲区 并希望以十六进制显示它们 我尝试了以下方法 但它始终输出相同的值 尽管应该通过网络接收不同的值 char buffer 512 bzero buffer 512 n read connection fd
  • 从 Netbeans 构建时自动签署 JAR

    我想知道 Netbeans 是否有一些选项或设置允许我在构建过程中自动签署 jar In your post jarant target 阅读一下可能会方便来自文件的密码 例如 keyconf 授予文件仅限用户访问权限 例如400 or 6
  • System.Threading.Timer 仅触发一次

    使用下面的代码 计时器仅触发一次 我缺少什么 public static List
  • 如何在Android项目中从头开始设置DAGGER依赖注入?

    如何使用匕首 如何配置 Dagger 在我的 Android 项目中工作 我想在我的 Android 项目中使用 Dagger 但我发现它很混乱 编辑 Dagger2 也于 2015 年 04 月 15 日发布 而且更令人困惑 这个问题是一
  • 如何水平滚动网页?

    我想开发一个每当用户向下滚动鼠标滚轮时向左移动的网页 一般来说 所有网站都是垂直滚动的 但这应该水平滚动 示例代码 div style width 100 height 400px here goes the content div 我的目
  • Java 中的条件数字格式

    如何在 Java 中格式化浮点数 以便仅在浮点数不为零时才显示浮点组件 例如 123 45 gt 123 45 99 0 gt 99 23 2 gt 23 2 45 0 gt 45 编辑 我忘了提及 我仍在使用 Java 1 4 抱歉 如果
  • Vista/7:如何获得玻璃颜色?

    你怎么用DwmGetColorizationColor The 文档说它返回两个值 32 位0xAARRGGBB含有用于玻璃成分的颜色 一个布尔参数 如果颜色是不透明的混合颜色 则为 true 不管什么意思 Here s a color t
  • WCF MaxReceivedMessageSize:超出最大消息大小配额

    我收到此错误 传入消息的最大消息大小配额 65536 已调整为 超过了 要增加配额 请使用 MaxReceivedMessageSize 适当的绑定元素上的属性 如何在 WCF 客户端应用程序或服务器应用程序中增加此值 如果可能 请提供如何
  • Primefaces OverlayPanel 的延迟问题 - 加载为惰性

    我正在使用 Primefaces 3 2 与 jsf 2 和 glassfish 3 1 2 我有一个包含用户头像的用户 p dataTable 每当用户将鼠标移到头像上时 就会出现 p overlayPanel 其中包含有关用户的更多信息
  • ARC 和 Storyboard 的兼容性

    考虑到设备和 iOS ARC 和 Storyboard 的兼容性如何 ARC 和 Storyboard 是否适用于 iPhone 3G 3GS 4 和 4S ARC 和 Storyboard 可以在 iOS 4 和 5 上运行吗 ARC 运
  • 如何初始化 wchar_t 变量?

    我正在看书 C 简而言之 并在阅读完本节后字符集 谈到宽字符 我写了这个程序 include
  • 使用 AJAX 刷新的页面上的 Google 加一按钮

    有谁知道 Google 加一按钮的一些代码可以在使用 AJAX 刷新的页面上运行吗 Facebook 的操作非常简单 但我在 Google 上找不到任何相关文档 Thanks 我也在寻找这个并找到了这个
  • Bitbucket:显示标记为秘密的变量的值

    对于我的一个存储库 我需要查看我为部署的安全属性设置的值 按中所述创建https support atlassian com bitbucket cloud docs variables and secrets Secured variab
  • .Net Core 依赖注入 IdbConnection

    我有一个 NET MVC 应用程序 它使用 autofac 进行依赖注入 当应用程序启动时 以下代码注册 IDbConnection var connectionString ConfigurationManager ConnectionS
  • 在真实设备上通过 USB 连接 localhost api 与 Android Studio 时出现超时错误

    我在 Window 8 1 上使用 Android Studio 版本 3 安装了 XAMPP 以在本地主机上托管 php api 我正在尝试从 Android Studio 访问 localhost api 在主机名中 我使用了 IPv4
  • Docker 运行失败,守护程序发出错误响应

    我只需运行以下命令 docker run d p 80 80 name webserver nginx 拉取所有图像后返回此错误 docker 来自守护程序的错误响应 驱动程序外部编程失败 端点网络服务器上的连接 ac5719bc0e95e
  • 如何在 SwiftUI 中的 foreach 循环中设置切换状态

    当我尝试在字典的值循环内设置显示切换时 我从错误消息中得到的帮助很少 如果我取消注释下面的 3 行注释代码 并尝试为循环中的每个属性添加切换 则会收到以下错误 无法将类型 HStack Text ConditionalContent gt