完成时的 SwiftUI EditButton 操作

2024-01-09

如何设置当用户点击时要执行的操作EditButton当它显示为“完成”时?甚至可以这样做吗?

请注意,这与在用户可能执行的每个单独编辑中执行操作不同(例如onDelete or onMove)。当用户完成所有更改并准备好提交它们时,如何设置要执行的操作?

这是必要的,因为我正在模型的临时副本上进行所有更改,并且在用户点击“完成”之前不会将更改提交到实际模型。我还提供了一个“取消”按钮来放弃更改。

struct MyView: View {
    @Environment(\.editMode) var mode

    var body: some View {
        VStack {
            HStack {
                if self.mode?.value == .active {
                    Button(action: {
                        // discard changes here
                        self.mode?.value = .inactive
                    }) {
                        Text("Cancel")
                    }
                }

                Spacer()

                EditButton()
                // how to commit changes??
            }
            // controls to change the model
        }
    }
}

是否可以在“完成”上设置“完成”操作EditButton或者我是否必须提供自己的按钮来充当EditButton?我当然可以做到这一点,但看起来应该很容易做到EditButton.


XCode 12/iOS 14 的新答案使用onChange 修饰符 https://developer.apple.com/documentation/authenticationservices/signinwithapplebutton/3679061-onchange.

这种方法使用 SwiftUIeditMode关键路径可通过@Environment随着新的onChange修饰符来确定视图何时进入和退出编辑模式。

在您看来,请执行以下操作:

@Environment(\.editMode) private var editMode

...

.onChange(of: editMode!.wrappedValue, perform: { value in 
  if value.isEditing {
     // Entering edit mode (e.g. 'Edit' tapped)
  } else {
     // Leaving edit mode (e.g. 'Done' tapped)
  }
})

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

完成时的 SwiftUI EditButton 操作 的相关文章

随机推荐

  • 如何让 Turtle 等待按下的键

    我和我的团队创建了一款在 Turtle 上运行的棋盘游戏 我们很难在不需要 IDE 控制台的情况下运行游戏 我们希望使用 onkeypress 来运行我们的游戏 这样用户就不必离开游戏窗口 import turtle from turtle
  • 普罗米修斯上的多个目标

    我已经在Centos上配置了prometheus 版本详细信息如下 prometheus 2 5 0 linux 386 我在 prometheus yml 配置文件中添加了两个目标 所有服务器节点导出器都在运行 配置如下 scrape c
  • PL SQL For 循环 Sys_RefCursor

    我正在使用 Oracle 12c 在 PL SQL 中我可以做到这一点 set serveroutput on declare begin for x in select 1 as y from dual loop dbms output
  • ttk 应用样式时打开辅助窗口

    这是我的代码 from Tkinter import import ttk tkMessageBox import os font Avenir 24 b ttk Style b configure TButton font font cl
  • 如何更改 Textview 中的字母间距?

    如何更改文本视图中的字母间距 如果我里面有 HTML 文本会有帮助吗 我不能在我的代码中使用 webview 附 我在带有 HTML 文本的文本视图中使用自己的字体 从 API 21 开始 有一个选项设置字母间距 可以调用方法设置字母间距
  • 如何在我的 Angular2 应用程序中列出/输出 @Routes 中的所有路由

    我有一个快速的问题 我目前正在浏览https angular io docs ts latest api router Router class html https angular io docs ts latest api router
  • 如何用pl/sql循环接受用户输入?

    我希望能够根据用户输入将可变数量的行插入表中 例如 Please enter value enter done when no more values value 1 Please enter value enter done when n
  • 在 iFrame 中嵌入 Google Apps 脚本

    我正在尝试将使用 Google Apps 脚本中的 Javascript 动态构建的页面嵌入到我的 iFrame 网站中 但未显示 iFrame 的内容 Google Apps 脚本具有同源策略 可阻止其加载 我想做的是 我删除了完整链接
  • 类的对象..无法转换为字符串

    我做了我的第一堂课 但在将对象转换回字符串时遇到了麻烦 class Cryption var data var salt function construct data salt this gt data data this gt salt
  • 在 Windows 中从 cmd 运行 R

    我正在尝试安装 rtools 以便我可以安装另一个软件包 Google 的 causalimpact 并且该过程表明我的 R 路径环境存在问题 主要问题 我跑不了R从命令窗口 预期的行为是输出如下并给出 gt prompt R versio
  • 如何设置AMP图像居中对齐

    如何在 amp 页面中进行如下设置 p align center img src img LOCK1 png width 40 img src img lock2 png width 40 img src img LOCK3 png wid
  • 无法加载文件或程序集“PDFNet”或其依赖项之一。尝试加载格式不正确的程序

    我正在尝试从 VS2012 中的空白 Web 表单模板构建示例 Web 应用程序 并向其中添加 PDFNet dll 如果我在 NET 3 5 中运行该项目没有问题 如果我在 NET gt 4 中运行它 我会收到此错误 无法加载文件或程序集
  • 设置 UIImageView 的图像属性会导致严重滞后

    让我告诉你我遇到的问题以及我如何尝试解决它 我有一个 UIScrollView 它在从左到右滚动时加载子视图 每个子视图有 10 20 个图像 每个图像大约 400x200 当我从一个视图滚动到另一个视图时 我遇到了相当大的延迟 经过调查
  • 为什么在 Linux 上为 C 程序定义 glGenVertexArrays 而不是为 C++ 程序定义?

    考虑以下文件 include
  • 当`BundleTable.EnableOptimizations = true`时是否使用版本文件的.min?

    是否指定BundleTable EnableOptimizations true缩小所有CSS and JS文件在一个包中 或者是可用的min使用的文件版本 一个与另一个无关 BundleTable EnableOptimizations存
  • 内容控件未更新

    我正在尝试将 MainWindow 绑定到视图 我在代码中更改了该视图并期望它在主窗口中更新 但这并没有发生 我的 XAML 中有这段代码
  • SASS:不是选择器

    我有一个 notSASS mixin 中的 css 选择器 但它不执行任何操作 代码片段 mixin dropdown pos pos right not notip if comp tip true if pos right top dr
  • 多个线程从同一个套接字读取

    我正在开发一个显示来自服务器的数据的应用程序 服务器不是我的 不太稳定 建立太多连接会导致服务器崩溃 我的主要活动中有一个连接到服务器的套接字 但有时我想打开读取数据并显示数据的子活动 我的问题是 我无法使用相同的套接字来实现此目的 并且必
  • PHP gdLib 8 位 PNG 与 alpha

    如何将使用 gd 创建的图像保存为 png 8 它可以很好地保存为具有透明通道的 gif 但我想使用 png 8 此致 啤酒威斯勒 Using imagesavealpha 透明的背景颜色应该可以解决问题 基于 dfilkovi 的代码
  • 完成时的 SwiftUI EditButton 操作

    如何设置当用户点击时要执行的操作EditButton当它显示为 完成 时 甚至可以这样做吗 请注意 这与在用户可能执行的每个单独编辑中执行操作不同 例如onDelete or onMove 当用户完成所有更改并准备好提交它们时 如何设置要执