带切换功能的 SwiftUI onDelete 列表

2023-12-11

这是我对这个问题的第三个问题。到目前为止还没有不崩溃的解决方案。我想用切换来滑动删除列表。我的(简化的)代码如下所示:

struct Item: Identifiable {
    var id = UUID()
    var isOn: Bool
}
struct ContentView: View {
    @State var items = [Item(isOn: true) , Item(isOn: false), Item(isOn: false)]
    
    var body: some View {
        NavigationView {
            List {
                ForEach(items) {item in
                        Toggle(isOn: self.selectedItem(id: item.id).isOn)
                        {Text("Item")}
                }.onDelete(perform: delete)
            }
        }
    }
    
    func delete(at offsets: IndexSet) {
        self.items.remove(atOffsets: offsets)
    }
    
    func selectedItem(id: UUID) -> Binding<Item> {
        guard let index = self.items.firstIndex(where: {$0.id == id}) else {
            fatalError("Item does not exist")
        }
        return self.$items[index]
    }
    
}

我尝试了不同的解决方案,例如和.indices and .enumerated()并循环索引。解决方案与func selectedItem()来自https://troz.net/post/2019/swiftui-data-flow/,这是一个获得 Bindable 的好主意item.

如果我尝试滑动删除列表项,我总是会收到此错误:

Thread 1: Fatal error: Index out of range

我真的很想了解为什么会发生这种情况,但是 XCodes 错误消息并没有真正的帮助。我在这里发布了类似的问题:带有 .indices() 的 SwiftUI ForEach 在 onDelete 后不会更新(见评论)和这里:SwiftUI:使用切换删除单元格时索引超出范围.

我真的希望有人可以帮助解决这个问题,因为我尝试在互联网上找到解决方案几天,但建议的解决方案都没有真正适合我。

谢谢,尼科


这是代码的固定部分(使用 Xcode 11.4 / iOS 13.4 测试)

func selectedItem(id: UUID) -> Binding<Item> {
    guard let index = self.items.firstIndex(where: {$0.id == id}) else {
        fatalError("Item does not exist")
    }

    // Don't use direct biding to array element as it is preserved and
    // result in crash, use computable standalone binding instead !!
    return Binding(get: {self.items[index]}, set: {self.items[index] = $0})
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带切换功能的 SwiftUI onDelete 列表 的相关文章

  • 如何将嵌套的数字列表转换为字符串列表?

    我有下面的列表 p 1 2 3 4 2 3 4 1 如何将子列表放入字符串中 例如 期望的结果是 p 1234 2341 可以通过将每个整数转换为字符串并连接字符串来完成 p join map str sub list for sub li
  • 我应该如何在序言中设计这个谓词?

    我必须写一个谓词stepup L Z X where L是一个列表并且Z and X是整数 它应该返回true if the Z可以步入X使用列表中用户给出的合法步骤 例如 stepup 7 12 19 6 32 应该返回true sinc
  • SwiftUI 表未正确取消初始化关联实例

    我在 SwiftUI 中遇到了与工作表演示相关的令人费解的行为 当关闭工作表时 我注意到关联的实例 工作表视图持有的视图模型 似乎没有正确取消初始化 根据我的测试 唯一的情况是deinit使用时按预期被调用 StateObject 相比之下
  • 具有固定大小的 Java PriorityQueue

    我正在计算算法的大量可能的结果组合 为了对这些组合进行排序 我用双值对它们进行评级并将它们存储在 PriorityQueue 中 目前 该队列中有大约 200k 个项目 这非常占用内存 实际上 我只需要说出列表中所有项目中最好的 1000
  • SwiftUI 有模糊背景的方法吗?

    我希望模糊视图的背景 但不想必须突破 UIKit 才能完成它 例如 UIVisualEffectView 我正在翻阅文档却一无所获 似乎没有办法实时剪辑背景并对它应用效果 我错了还是以错误的方式看待它 1 Native SwiftUI方式
  • 在列表列表中查找共同元素

    我有一个名为 wordlist 的单词列表列表 如下所示 dog cat sheep rabbit kiss time cow pig bomb cat sheep cake boy new 我想找到所有子列表中的共同元素 因此 我期望的上
  • 在 python 中高效、快速地迭代元组列表中超过 3600 万个项目

    首先 在任何人将其标记为重复之前 请阅读以下内容 我不确定迭代的延迟是否是由于尺寸巨大或我的逻辑造成的 我有一个必须迭代的用例3600 万件商品在元组列表中 我的主要要求是速度和效率 样本清单 how are you I am fine h
  • SwiftUI - 显示符合协议和 ForEach 的元素的视图

    我想写一个 SwiftUI 视图我的结构列表对符合给定协议的元素数组进行操作我的协议 该示例有效 但当然我需要对数组的元素进行 ForEach 如注释行中所尝试的那样 使用 ForEach 我得到 协议类型 MyProtokoll 的值不能
  • 将 for 循环转换为列表理解

    我有一个for循环 将字符串列表中每个元素的子字符串与另一个字符串列表中的元素进行比较 mylist for x in list1 mat False for y in list2 if x 14 in y mat True if not
  • 如何为PDFView设置PDFPageOverlayViewProvider?

    更新 我正在尝试设置pageOverlayViewProvider for a PDFView并且它没有按预期工作 PDFPageOverlayViewProvider方法没有被调用 PDFViewDelegate方法运行良好 struct
  • Swift Joint:在可观察对象中使用计时器发布者

    在这个问题被标记为重复之前这另一个问题 https stackoverflow com questions 57199922 create a timer publisher using swift combine 我试图了解出版商是如何运
  • 将2个暗淡数组“列表列表”输出到python中的文本文件

    简单的问题 我正在创建一个两个暗淡的数组 ddist 0 d for in 0 d 在下面的代码中使用列表 它使用 gis 数据输出距离 我只是想要一种简单的方法来获取数组 列表的结果并将其输出到保持相同的 N N 结构的文本文件 我过去曾
  • 如何向列表添加值>

    我需要将派生类的元素添加到抽象类的共享指针列表中 我一直在尝试这个 我知道我正在尝试在下面的示例中创建抽象类的实例 但我不知道如何使其工作 简化的类如下所示 using namespace std class Abstract public
  • 如何使用流从两个列表或数组乘法中查找元素对

    我有两个数字列表 我想找到所有可能的数字对 例如 给定列表 1 2 3 and 3 4 结果应该是 1 3 1 4 2 3 2 4 3 3 3 4 我知道我可以使用for loop但有没有更简洁的方法来使用Java 8 流 我尝试了以下操作
  • 如何访问数据框中的一行嵌套字典

    我有一个 json 文件 如下所示 file name main question no Q 1 question what is answer user John comment It is defined as value number
  • 了解 Scala 中的中缀方法调用和缺点运算符(::)

    我对 Scala 编程语言相当陌生 当我遵循以下网站的讲义时 我正在尝试一些萦绕在我脑海中的东西 here http horstmann com sjsu cs152 04 closures1 html 我想我无法真正理解 cons 运算符
  • 如何在MyBatis foreach中迭代HashMap?

    我正在尝试在 mybatis 中生成如下所示的 sql SELECT COL C FROM TBLE 1 WHERE COL A COL B in kp kar srt sach 而我的输入参数类型是HashMap 现在如何从映射器 xml
  • foreach如何知道迭代集合被修改了?

    当我修改集合时 我正在迭代foreach 我有一个例外 所以我只是好奇如何foreach 或运行时 检测到这一点 对于一般对象可以这样做吗 集合本身必须检测它 在标准库集合中 这是通过拥有一个内部版本号来实现的 该版本号由每个操作修改 并由
  • 将嵌套列表转换为嵌套列表

    我知道可以将项目列表从一种类型转换为另一种类型 但是如何将嵌套列表转换为嵌套 List 已经尝试过的解决方案 List
  • 如何在 SwiftUI 中将阴影应用于内部视图?

    我在周围添加了阴影VStack其中包含我的两个文本字段和一个提交按钮 然而 阴影也被应用到了文本框内的两个文本字段 VStack 我在这里缺少什么导致这种情况发生吗 我尝试添加shadow radius 0 在文本字段上 但它不会改变任何内

随机推荐

  • 在快速路由文件中使用 socket.io

    我正在尝试将 Socket io 与 Node js 结合使用 并发送到路由逻辑内的套接字 我有一个相当标准的 Express 3 设置 其中有一个位于路由中的 server js 文件 然后我有一个位于路由文件夹中的 index js 该
  • 为什么打印功能没有在正确的时间运行? [复制]

    这个问题在这里已经有答案了 这是我的代码 import time as t print hello end t sleep 1 print hello end t sleep 1 print hello end t sleep 1 我的问题
  • Imagemagick 去饱和黑/白?

    想把它变成黑白的 不知道该使用 imagick 的什么 handle data file get contents http www bungie net Stats Reach Nightmap ashx http www bungie
  • AttributeError:“CountVectorizer”对象没有属性“get_feature_names”

    该代码之前可以运行 没有显示任何错误 这是一个情感分析机器学习项目 该代码基于字数统计的逻辑回归模型 c CountVectorizer stop words english def text fit X y model clf model
  • jqGrid 使用“filterToolbar”在客户端进行过滤

    我必须向完全在客户端管理的 jqGrid 添加过滤 数据仅从服务器加载一次 我需要使用 filterToolbar 来过滤网格数据 但如果客户端有默认搜索机制 则无法找到信息 服务器端搜索是做到这一点的唯一方法吗 谢谢 科斯明 不幸的是 搜
  • 为什么我的超便携笔记本电脑 CPU 无法在 HPC 中保持最佳性能

    我开发了一个高性能Cholesky 分解例程 在单个 CPU 上应具有约 10 5 GFLOP 的峰值性能 无超线程 但是当我测试它的性能时 有一些我不明白的现象 在我的实验中 我测量了矩阵维度 N 从 250 增加到 10000 时的性能
  • Javascript 事件,捕获有效,而冒泡则不行

    我对 JS 事件传播的理解是 事件首先在 DOM 树中 捕获 然后 冒泡 回来 沿途触发处理程序 div nothing yet div
  • NextJS htaccess 设置,URL 上不带尾部斜杠

    在 NextJS 上发现我的网站存在问题 在开发过程中 我使用按钮导航该网站并手动更改浏览器地址栏 碰巧我不小心在末尾添加了一个斜杠 但我的本地主机服务器将其删除 一切正常 但当我将静态应用程序上传到托管时 一切都发生了变化 重新加载页面时
  • AngularJS - 初始化日期输入

    我有一个应用程序 其中有几个日期字段需要接受来自用户和数据库的值 I found this解决方案 但仍然收到错误消息 错误 ngModel datefmt http errors angularjs org 1 5 8 ngModel d
  • 调试 u-sql 作业

    我想知道是否有任何提示和技巧来查找数据湖分析工作中的错误 大多数时候错误消息似乎不是很详细 当尝试从 CSV 文件中提取时 我经常收到这样的错误 顶点故障触发作业快速中止 顶点失败 SV1 Extract 0 且 gt 错误 顶点用户代码错
  • 使用 8 张图像在 UIImageView 周围创建边框

    I have 8 images I made 4 images for each of the corners and 4 images for each of the sides of UIImageView Now how on Ear
  • 在 Spring 中创建临时 JMS jms 主题

    我正在尝试重构一些遗留代码以使用 Spring 处理与大型机服务的 jms 连接 我需要连接为大型机服务回复创建一个临时主题并将其设置为message setJMSReplyTo replyTo 在我发送消息之前的消息中 谁能提供这方面的例
  • Logstash 中需要 #、输入、过滤器、输出之一

    我试图通过简单地执行文档中给出的命令来回显所输入的内容来使 Logstash 安装工作 但这给了我以下错误 我的命令 C logstash 1 4 0 bin gt logstash bat agent e input stdin outp
  • 如何使用 Laravel 的 Paginate() 输出当前迭代?

    Laravel 5 2 应用程序 我的控制器中有一个函数 它使用 order by 子句查询我的数据库 然后我对其进行分页 public function foo results DB orderBy name desc gt pagina
  • 如何确保 Node.js 在 MongoDB 连接断开后继续运行?

    我在 Express 中有一个错误处理中间件 它尝试捕获所有传入的错误 app use function err req res next console error err stack res status 500 res render
  • 将图像从 azure blob 存储转换为 Base64?

    我正在尝试将图像从 Azure blob 存储转换为 base64 private static string FromAzureToBase64 string azureUri Uri blobUri new Uri azureUri C
  • 将 R 县地图叠加到州地图上

    R新手在这里 如果我第一次使用map state 我该如何使用map county ylim xlim 但像这样抵消它 现在 我正在使用 imagemagickcomposite gravity southwest 合并 2 个 PNG 文
  • 如何在 Vim 中为命令创建别名?

    Vim 是我编程时首选的文本编辑器 因此我总是遇到一个特别烦人的问题 通常 当我快速需要保存缓冲区并继续执行其他杂项任务时 我会执行典型的操作 w 然而 我总是 似乎超过 50 的时间 设法利用这一点 w 很自然地 Vim 对我大喊大叫 因
  • 带边框的纯 css 树

    我正在尝试用纯 CSS 创建一棵带有缩进的树 我一直在尝试使用类似的东西 ul tree ul padding left 5px 但是我想在列表中的每个项目之间进行分隔 如果我使用上面的代码 分隔栏也会缩进 所以它不太好 这是我当前的代码
  • 带切换功能的 SwiftUI onDelete 列表

    这是我对这个问题的第三个问题 到目前为止还没有不崩溃的解决方案 我想用切换来滑动删除列表 我的 简化的 代码如下所示 struct Item Identifiable var id UUID var isOn Bool struct Con