从 SwiftUI 中的切换列表中读取值

2024-03-17

我希望这个问题不要太愚蠢。我被这个问题困扰了很长时间,尝试了不同的方法,但仍然失败。我对 Swift 和 SwiftUI 还很陌生,这就是为什么我可能看不到明显的东西。

我有一个包含切换列表的视图。切换列表依赖于setData它是由包含 id、名称和 imageUrl 的 JSON 文件构建的。在此视图中,用户可以选择不同的组合来开始游戏:

import SwiftUI

struct GameGenerationView: View {
    var body: some View {
        VStack {
            List(setData, id: \.id) { set in
                GameGenerationRow(set: set, store: SetSelectionStore(id: set.id, name: set.name))

            }
            Button(action: {
                print("results")

            }) {
                Text("Spiel starten")
            }
        }
        .navigationBarTitle("Spielgenerator", displayMode: .inline)
    }
}

struct GameGenerationView_Previews: PreviewProvider {
    static var previews: some View {
        GameGenerationView()
    }
}

其次是实际的切换GameGenerationRow:

import SwiftUI

struct GameGenerationRow: View {
    var set: CardSet
    @ObservedObject var store: SetSelectionStore

    var body: some View {
        HStack {
            Toggle(isOn: $store.selection) {
                Spacer()
                Text(set.name)
                    .fontWeight(.bold)
            }
            .frame(height: 35)
        }
    }

}

struct GameGenerationRow_Previews: PreviewProvider {
    static var previews: some View {
        GameGenerationRow(set: setData[0], store: SetSelectionStore(id: 1, name: "test"))
    }
}

每个Toggle的数据都收集在我的SetSelectionStore:

import SwiftUI
import Combine

final class SetSelectionStore: ObservableObject {
    var id: Int
    var name: String
    @Published var selection: Bool = false

    init(id: Int, name: String) {
        self.id = id
        self.name = name
    }

    func returnStore() -> [String:Any] {
        return [
            "id": self.id,
            "name": self.name,
            "selection": self.selection
        ]
    }
}

按下按钮后GameGenerationView我想从这样的开关中收集状态......

[
 {
   name: "Set1"
   usedForGame: 0
 },
 {
   name: "Set2"
   useForGame: "1"
 }
]

...以便将其传递给函数来选择游戏数据并导航到新视图。

我用谷歌搜索了很多,但无法找到收集不同切换状态的解决方案。有没有简单的方法可以做到这一点?我是否选择了完全错误的方法?希望有人可以帮助并推动我走向正确的方向。

谢谢你!


None

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

从 SwiftUI 中的切换列表中读取值 的相关文章

  • Swift - 集成 GameCenter 以使用排行榜

    我正在用 Swift 制作一个游戏 我希望能够使用 GameCenter 发布用户的分数 以便可以看到所有用户的分数 然而 我花了一天的时间试图弄清楚如何做到这一点 但我没有找到任何有用的说明 我对 iOS 编程和 Swift 还很陌生 关
  • 检查indexPath处的单元格在屏幕UICollectionView上是否可见

    我有一个CollectionView向用户显示图像 我在后台下载这些 下载完成后 我调用以下函数来更新collectionViewCell并显示图像 func handlePhotoDownloadCompletion notificati
  • swift 4 - HMCharacteristicTypeSerialNumber 已弃用

    我想阅读输入的配件信息HMAccessory 例如序列号 HMCharacteristicTypeSerialNumber 制造商 HMCharacteristicTypeManufacturer 模型 HMCharacteristicTy
  • Swift 3:将数据转换为字符串返回 nil 值

    将数据转换为字符串会返回 nil 值 Code thus unwraps the image if let image image print Saving image data don t unwrap here if let data
  • C# 中两种不同类型的列表

    我目前在为客户提供购物车时遇到问题 他希望能够在 CartItems 之间添加文本 所以我想知道是否有某种方法仍然只有一个列表 我的解决方案是有两个列表 其中一个是 IList 类型 在计算购物车的重量和总体价格时会迭代 而另一个 ILis
  • 使用 'vendored_frameworks' 和 'source_files' 对于 cocoapod 使用 'use_frameworks!'

    我正在构建一个 cocoapod 它基本上包含一个框架 私有源 和一个依赖于该框架的视图 开源 所有这些都是用 Objective C 制作的 在 podspec 中我有以下几行 spec vendored frameworks MyPod
  • 如何使用 SwiftUI @ViewBuilder 创建需要参数的视图?

    在我的问题的答案中如何将通用 SwiftUI 视图添加到另一个视图 https stackoverflow com q 73571940 777861 我了解到这可以通过使用来完成 ViewBuilder 虽然这对于我的大多数用例都适用 但
  • 在 Swift 中删除字符串中第一个字符的最简洁方法是什么?

    我想删除字符串中的第一个字符 到目前为止 我想到的最简洁的事情是 display text display text substringFromIndex advance display text startIndex 1 我知道我们不能用
  • 使用 Swift 在 iOS 和 Android 之间共享核心代码

    我想要的是 使用 Swift 在 Android 和 iOS 之间共享非 UI 代码 问题 Android 具有 NDK 支持 允许您使用 Java 本机接口 JNI 运行 C 和 C 代码 不是 Objective C 我是一名Java程
  • 如何将 GoogleAnalytics 标头导入到库框架中?

    我为我的项目创建一个库框架 我希望该框架能够依赖 Google Analytics 库 由于与应用程序目标不同 框架没有桥接标头 因此如何将标头导入到框架中 并且在框架的公共头文件中导入 Google Analytics 标头会产生其他意外
  • 在 UIPageViewController 中跟踪页面索引的可靠方法 - Swift

    我在位于常规 UIViewController 中的容器内有一个 UIPageViewController 自定义 我需要能够在每次页面更改时调用一个事件 但前提是它确实发生了变化 而不仅仅是一半或类似的事情 using func page
  • iOS WebView 空白

    我已使用 YouTube 的标准嵌入网址在我的 iOS 8 3 应用程序中嵌入了 YouTube 视频 sample http www youtube com embed HkAK9QRe4ds 它按预期工作 但看起来很奇怪 那个白色间隙
  • 如何缩放 CAShapeLayer

    我很快就成功制作了动画bezier path它包含在一个CAShapeLayer 我唯一的问题是将其实现到其他屏幕尺寸上 有谁知道我如何扩展CAShapeLayer里面有路径吗 即使其变为原始大小的一半 使用这个函数 var shapela
  • 如何在应用程序打开或关闭的情况下在后台的特定日期时间快速运行任务

    我正在开发闹钟应用程序 我需要在特定时间安排闹钟 我使用scheduleLocalNotification用于安排警报 它工作正常 如我所愿 BUT在触发警报之前 我需要向 API 服务器发出请求 在该请求中 我想检查从 API 服务器返回
  • NSMenu 未调用 validateMenuItem 或 menuWillOpen

    我的 Mac 应用程序有一个 NSMenu 其委托功能validateMenuItem and menuWillOpen从来没有被调用过 到目前为止 网上的解决方案都没有帮助 看来我做的一切都是对的 菜单项的选择器属于同一类 管理它的类继承
  • 在 SwiftUI 中使用获取视图的宽度

    我需要获取渲染视图的宽度SwiftUI 这显然没那么容易 我的看法是 我需要一个返回视图尺寸的函数 就这么简单 var body some View VStack alignment leading Text timer name font
  • 替换 Python 列表/字典中的值?

    好的 我正在尝试过滤传递给我的列表 字典并稍微 清理 它 因为其中有某些值我需要删除 所以 如果它看起来像这样 records key1 AAA key2 BBB key3 CCC key4 AAA 我如何快速轻松地运行所有内容并将 AAA
  • 优化 - 步进可能表现奇怪:iOS/Unity

    我正在尝试将 Unity 集成到 iOS 应用程序中 我已经遵循了这个教程http www agnosticdev com blog entry swift integrating unity and vuforia ios swift p
  • 如何使用包含 \n 的 .txt 创建一维列表?

    我想读取一个文本文件并将文件的每个元素放入一个列表中 而不是为文件中的每一行都有一个单独的列表 例如 如果文件是 你好我的名字 Is Joe 我希望列表是 你好 我的名字是 Joe 而不是 你好 我的名字 是乔 这是我到目前为止所拥有的 d
  • 在 DecodingError 中采用 CustomNSError

    我正在使用 Crashlytics 编写一个错误记录器 并且遇到了一个问题 这个问题让我质疑我对协议和动态调度的理解 使用 Crashlytics 记录非致命错误时 API 需要一个符合错误的对象和一个可选的用户信息字典 我现在正在查看 J

随机推荐

  • 多个独立maven项目的通用测试数据

    我有一个 Maven 项目 可以将特定格式的文本文件转换为另一种格式 为了进行测试 我在 src test resources 中放入了大量的测试文件 我还有另一个项目 它使用第一个项目进行转换 然后对输出格式执行一些额外的操作 我还想针对
  • MongoDB:如何计算文档中键的数量?

    假设一个文档是 a 1 b 1 c 2 z 2 如何计算该文档中键的数量 谢谢 如果通过聚合框架使用 MongoDB 3 6 及更高版本 则完全有可能 使用 objectToArray https docs mongodb com manu
  • 在 matplotlib 中将多个饼图分解在一起

    我真的很喜欢 matplotlib 饼图上的 爆炸 选项 我希望能够 集体爆发 我正在绘制许多小切片 分为 3 或 4 类 我想将所有小切片作为组爆炸在一起 我认为这并不完全清楚 所以我呼吁我严重缺乏绘制基本形状的能力 并制作这张图片来展示
  • 如何使azure应用程序服务信任OnPrem CA颁发的证书?

    我正在尝试在 https 协议下使用来自 Azure APP 服务的本地 Web 服务 当我这样做时 我收到了错误 经验证远程证书无效 程序 这是有意义的 因为默认情况下 Azure 不必信任该服务 而是提供由 OnPrem CA 颁发的证
  • 使用 Swing 的 Java 聊天应用程序(概念)

    我想使用 Swing 作为界面用 Java 编写一个聊天应用程序 我想出了一个主意 在疯狂程序员 https stackoverflow com users 992484 madprogrammer 但我不确定这是否是解决此问题的最佳方法
  • 如何在linux下用c写一个http1.0代理服务器?

    我必须开发仅在 Linux 和 c 中使用 HTTP 1 0 的代理服务器 我需要一些提示才能开始开发 我假设您对使用 linux 和 c 语言有信心 没有任何提示 否则不要从开发代理开始 阅读并理解RFC 1945 HTTP 1 0 ht
  • 从低均值泊松分布中绘制数字的性能

    为了在C 中从泊松分布中抽取随机数 通常建议使用 RNG type rng std poisson distribution
  • 如何在 Visual Studio 中传递多个命令参数?

    我正在使用 LZMA SDK 开发一个压缩 解压缩项目 主程序包含一些我必须用来运行应用程序的参数 要从命令行运行它 我使用 LzmaUtil exe e input elf output elf 我正在使用 VS 2013 所以我添加了e
  • org.xml.sax.SAXParseException:src-resolve:无法将名称“repository:auditing-attributes”解析为(n)“属性组”组件

    在项目上运行 Maven 测试时出现以下错误 我正在使用 Spring Data Neo4j 构建一个测试应用程序 java lang IllegalStateException Failed to load ApplicationCont
  • 将双精度数转换为没有小数位的字符串的最佳方法

    将双精度数转换为没有小数位的字符串的最佳方法是什么 关于什么String valueOf int documentNumber 双精度数小数点后始终为 0 我不需要舍入或截断 如果您确定 double 确实是一个整数 请使用这个 Numbe
  • Delphi - 反向查找“谁包括这个单元”

    我正在调试分布在许多单元上的大型应用程序 我在低级单元中遇到了编译错误 并且完全不知道该单元在应用程序的哪个部分被引用 有没有办法使用 RAD studio 2010 的 IDE 创建某种包含图 由于大多数使用的单元不是项目的一部分 并且分
  • React 表单,提交对象,然后将其推送到数组

    我是 React 新手 不确定如何执行此操作 我有一组已映射并在视图中渲染的对象 我想要做的是设置一个表单 将每个字段的值提交到新对象的相应属性 但我不确定如何执行此操作 这是我的初始数据 它在视图中呈现 contactArray name
  • C# Outlook 2007 COM 互操作应用程序不退出!

    知道为什么以下代码不退出通过 COM 互操作创建的 Outlook 2007 进程吗 Microsoft Office Interop Outlook Application app new Microsoft Office Interop
  • 为什么这个 readline 异步迭代器无法正常工作?

    这是一个更大流程的一部分 我在节点 v14 4 0 中将其提炼为最小的 可重现的示例 在此代码中 它从内部不输出任何内容for loop 我在控制台中只看到这个输出 before for loop finished finally done
  • 如何使用 pgx 记录查询?

    如果我使用 pgx 池 我找不到如何记录 sql 查询的文档 例如我创建了这样的池 func DB pgxpool Pool connStr os Getenv DATABASE URL conn err pgxpool Connect c
  • 迁移到Git时如何处理部分svn:externals?

    我想将 SVN 存储库导入 GitHub Enterprise 存储库 与此相关的问题有很多 其中大多数都可以通过 Git 子模块或 Git 子树来解决 就我而言 我有两个存储库 主项目存储库 模块存储库 超过 2 GB 的大型 SVN 存
  • 如果找不到 emacs 初始化文件怎么办?

    我正在尝试按照以下说明将 haskell 模式添加到 emacs http doc gnu darwin org haskell mode installation guide html http doc gnu darwin org ha
  • ASP.NET Core 2,jQuery POST 数据为空

    I use jQuery并发送数据POST方法 但在服务器方法中 值没有出现 可能是什么错误 client ajax type POST contentType application json charset utf 8 url AddT
  • 接受套接字函数超时

    我试图在接受套接字函数上设置超时 但没有成功 我希望接受功能块直到超时延迟结束 是否可以不将接受函数设置为非阻塞 我尝试了很多可能性都没有成功 感谢您的回答 下面是我的代码 struct timeval tv fd set readfds
  • 从 SwiftUI 中的切换列表中读取值

    我希望这个问题不要太愚蠢 我被这个问题困扰了很长时间 尝试了不同的方法 但仍然失败 我对 Swift 和 SwiftUI 还很陌生 这就是为什么我可能看不到明显的东西 我有一个包含切换列表的视图 切换列表依赖于setData它是由包含 id