从 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 中的切换列表中读取值 的相关文章

  • 在 React Native 中将 Swift 事件发送到 Javascript 的正确流程

    我一直在尝试使用 Swift 构建全面的蓝牙功能 我目前陷入了如何将事件从 Swift 发送回 React Native 的困境 我尝试过this https stackoverflow com questions 31870775 rea
  • 如何在 Swift 中使用未知密钥解码 JSON 响应?

    我想将数据拆分为https blockchain info ticker https blockchain info ticker这样每一行都是它自己的String在一个数组中 我正在制作一个获取所选货币价格的应用程序 因此 如果有人想要澳
  • 你能识别 Haskell 程序中的无限列表吗? [复制]

    这个问题在这里已经有答案了 可能的重复 如何判断列表是否是无限的 https stackoverflow com questions 7371730 how to tell if a list is infinite 在Haskell中 你
  • 如何检测 swiftui 中是否存在键盘

    我想知道按下按钮时键盘是否存在 我该怎么做 我已经尝试过 但我没有任何运气 谢谢 使用该协议 KeyboardReadable 你可以符合任何View并从中获取键盘更新 KeyboardReadable协议 import Combine i
  • 两个布尔列表之间的逻辑运算

    我得到了一个奇怪的结果 我尝试应用and or the orpython 中 2 个布尔列表的运算符 事实上 我得到的结果与我的预期完全相反 True False False and True True False gt True True
  • 对成员“buildBlock()”的引用不明确

    我一直在尝试使用 Swift UI 为 iOS 13 制作一个应用程序 但我不断收到这个奇怪的错误 对成员 buildBlock 的引用不明确 无论我做什么 错误都不会消失 我尝试一次对代码段进行注释 以查看哪一部分可能导致了问题 但唯一有
  • 迭代列表的奇怪速度差异

    我创建了两个重复两个不同值的长列表 在第一个列表中 值交替出现 在第二个列表中 一个值出现在另一个值之前 a1 object object 10 6 a2 a1 2 a1 1 2 然后我迭代它们 不对它们执行任何操作 for in a1 p
  • 由枚举驱动的 SwiftUI 选择器:值未更新

    根据苹果公司的相关文档SwiftUI 中使用 Enum 的选取器 https developer apple com documentation swiftui picker 如果枚举符合Identifiable协议除了CaseIterab
  • 可以获取位置,但无法获取航向

    我目前只使用模拟器 但我在 iOS 模拟器上快速使用 CoreLocation 时遇到问题 我得到此代码打印的位置更新 但从未得到标题 我不想当然 我正在尝试制作一个指南针类型的应用程序 它将显示目标的方位 class CompassVie
  • AWS S3 公共对象与私有对象?

    回到 S3 我的存储桶中有图像的 URL 我将在我的应用程序中呈现这些图像 但它们被设置为私有 当我尝试单击该链接时 它显示 访问被拒绝 当我将链接的设置更改为公共时 它会通过 但是我读到公共访问并不是最安全的事情 所以这本质上是一个由两部
  • 设置/覆盖 UICollectionView 中单元格之间的填充

    我有一个 UICollectionView 但在获取单元格之间的填充时遇到了问题 理论上 我应该能够将屏幕除以 4 并且我可以获得包含 4 个图像的单元格大小 完美地占据屏幕宽度 但是 它选择不这样做 相反 它会创建 3 个具有巨大填充的图
  • Swift:如何减少 didupdatelocations 调用

    我想出了一些代码来打印我所在位置的地址和邮政编码 这是在 didupdatelocation 函数中完成的 我遇到的唯一问题是 didupdatelocation 函数每秒都会更新该地址 因为这电池效率非常低 所以我一直在寻找使用间隔的方法
  • 所需框架与静态库

    构建现代框架 https developer apple com videos play wwdc2014 416 says 每个应用程序都有自己的自定义框架副本 https stackoverflow com a 15262463 242
  • 使用 LINQ 通过一个属性比较两个列表

    假设我有以下内容 class Widget1 public int TypeID get set public string Color get set class Widget2 public int TypeID get set pub
  • 在真实设备上展示测试广告

    这是我的代码 let request GADRequest request testDevices kGADSimulatorID XXXX2F32d69CCA859FFB559D0FEA3CF6483D08A6 adView load r
  • 我的游戏中应该有多少个视图控制器?

    我开始使用 spritekit 构建我的第一个游戏 现在我只有一个视图控制器来呈现开始屏幕场景 override func viewDidLoad super viewDidLoad let scene StartScreenScene C
  • 在 Swift 中使用 CommonCrypto 解密时出现问题

    我在一家Swift only加密 解密Extension for String and NSData 并且 crypt 部分的工作基于 Zaph 在链接问题中提供的答案 在 Swift 中使用 CCCrypt CommonCrypt 时出现
  • Swift C 回调 - Swift 类指针的 takeUnretainedValue 或 takeRetainedValue

    我有一些UIView or UITableViewCell 里面我有 C 回调 例如 CCallback bridge self observer data gt Void in let mySelf Unmanaged
  • 使用for循环时如何获取前一个元素? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 循环内的上一个和下一个值 https stackoverflow com questions 1011938 python previous and next values inside
  • IPV6 快速可达性

    我是 swift 和 xcode 的新手 并且我的应用程序因 IPV6 而被拒绝 性能 2 1 当我们执行以下操作时 您的应用程序会在运行 iOS 9 3 5 并连接到 IPv6 网络的 iPad 和 iPhone 上崩溃 具体来说 当我们

随机推荐

  • 多个独立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