首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法在Swift 4.2中再次撤消、重做和撤消

在Swift 4.2中,撤消(undo)、重做(redo)和撤消(undo)是编程语言中常见的操作,用于回退或恢复先前的操作。然而,在Swift 4.2中,这些功能并不直接内置在语言中,而是通过使用第三方库或自定义实现来实现。

撤消(Undo)是指撤销先前的操作,将系统状态恢复到之前的状态。重做(Redo)是指重新执行先前被撤销的操作,将系统状态恢复到撤销操作之前的状态。这些功能在许多应用程序中都非常有用,特别是在编辑器、图形界面设计工具和其他需要追踪和恢复操作历史的应用程序中。

要在Swift 4.2中实现撤消、重做和撤消功能,可以使用以下方法之一:

  1. 使用第三方库:有一些第三方库可以帮助实现撤消、重做和撤消功能,例如UndoManager。UndoManager是一个用于管理撤消和重做操作的类,可以跟踪和管理操作历史记录。您可以使用UndoManager来注册和执行操作,并使用其撤消和重做方法来撤消和重做操作。您可以在Swift Package Manager或CocoaPods中找到适用于Swift的UndoManager库。
  2. 自定义实现:您还可以自己实现撤消、重做和撤消功能。这通常涉及创建一个操作历史记录的数据结构,以及跟踪和管理操作的状态。您可以使用堆栈(stack)或链表(linked list)等数据结构来存储操作历史记录,并使用指针或索引来跟踪当前操作。当执行新操作时,您可以将其添加到操作历史记录中,并相应地更新指针或索引。当执行撤消或重做操作时,您可以使用指针或索引来找到先前或下一个操作,并将系统状态恢复到相应的状态。

无论您选择使用第三方库还是自定义实现,都需要在适当的时机调用相应的撤消、重做和撤消方法。例如,在用户执行撤消或重做操作时,您可以调用相应的方法来恢复系统状态。您还可以根据需要实现其他功能,例如限制撤消和重做的次数、保存操作历史记录到文件或数据库等。

总结起来,在Swift 4.2中,要实现撤消、重做和撤消功能,您可以使用第三方库如UndoManager或自定义实现来跟踪和管理操作历史记录,并在适当的时机调用相应的方法来恢复系统状态。这些功能在许多应用程序中都非常有用,可以提高用户体验和操作的灵活性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Swing 的 undo 包实现撤销重做功能

getRedoPresentationName() 返回此编辑可重复执行形式的说明。 如果end已调用此电话为超。 否则,如果有编辑重做,这种回报从下一个显著的编辑将要恢复的价值。...如果没有编辑重做end尚未援引这一收益来自值UIManager财产“AbstractUndoableEdit.redoText” ? 可以为Undo/Redo操作提供描述。...比如,如果要在菜单中提供“撤消删除”,“重做删除”菜单项而不是简单的无所指的“撤消”,“重做”菜单项,可以通过这两个方法来获得。...比如,要执行Delete操作,我们要记住删除的元素所在位置这两个现场数据,undo方法据此来原位置插入被删除的元素。如果没有这两个现场数据,undo就无从下手了。...4 调用Undo/Redo 撤消”按钮的事件处理器中,直接调用UndoManager的undo方法; 重做”按钮的事件处理器中,直接调用UndoManager的redo方法。

91420

【Mysql-InnoDB 系列】InnoDB 架构

3.5 重做日志 重做日志(redo log)是一种基于磁盘的数据结构,用于崩溃恢复期间更正由不完整事务写入的数据。...正常的操作中,重做日志对SQL语句或低级API调用产生的更改表数据的请求进行编码。在意外关闭之前未完成数据文件更新的修改,将在初始化期间接受连接之前自动重放。...默认情况下,重做日志在磁盘上的物理标识是名为ib_logfile0 ib_logfile1的两个文件。MySQL以循环方式写入重做日志文件。...回滚段驻留在undo表空间全局临时表空间中。 驻留在全局临时表空间中的撤消日志,用于用户定义的临时表中修改数据的事务。这些撤消日志不是重做日志,因为崩溃恢复不需要它们。...这种类型的撤消日志通过避免重做日志I/O而提高了性能。

1.1K10

软件界面中一些易混淆易用错的界面文案,以及一些约定俗成的文案约定

无论哪一种,都说明了理由可溯源的资料。 撤销 / 撤消 推荐:软件界面中推荐使用 “撤销”。应该逐渐淘汰“撤消”的使用。 实际:国产软件主要使用“撤销”,而国外软件的中文版本两者都有使用。...Windows 系统 Office 套件使用的是“撤消”: 撤销恢复 / 撤销重做撤消恢复 / 撤消重做 正确:恢复。 撤销:Undo。恢复:Redo。重做:Repeat。...正常情况下,Office 的左上角有一对按钮:“撤消重做”。但是,“重做” 的意思真的是 “重复上一步操作”。...当你点了 “撤消” 之后,这个 “重做” 按钮会消失,变成 “恢复” 按钮,意思是将刚刚 “撤消” 的操作 “恢复” 回来。...因此,如果只是 Office 软件里看了一眼就把文案抄过来了,那就会出现 “撤消重做” 这样的误用;实际上应该是 “撤销恢复”。

13960

MySQL 8.0.21中新的数据文件位置一致性

目录由以下变量定义:datadir, innodb_data_home_dir, innodb_undo_directory innodb_directories。...由于表空间目录没有存储MySQL 8.0的重做日志中,恢复时需要依赖已知目录来查找打开数据文件。 限制ADD DATAFILE路径可以使用户跟踪所有数据。...崩溃后,如果重做日志包含对这些文件的更改,则必须将这些数据文件目录添加到–innodb-directories,MySQL才能够启动。如果由于表空间尚未打开而无法应用重做日志,则恢复启动将失败。...也就是说,它是datadir下以该模式命名的目录中创建。...但之前可以唯一的撤消目录中创建非撤消表空间。如果使用先前的MySQL版本唯一的撤销目录中创建了一些非撤消表空间,升级到MySQL 8.0.21后,InnoDB会允许它存在。

1.4K30

Java Swing 的Document类详解

该示例中,如果文档的内容是序列“The quick brown fox”,如上图所示,则单词“The”之前的位置为0,并且单词“The”之后的位置之前的位置它后面的空格是3.序列“The”中的整个字符序列称为范围...getDefaultRootElement() getRootElements() 突变 所有文档都需要能够添加删除简单文本。 通常,通过键盘或鼠标的手势插入移除文本。...如果Document实现支持撤消/重做功能, UndoableEditEvent将UndoableEditEvent发送到所有已注册的UndoableEditListener 。...如果撤消了可撤消的编辑,则应从文档触发DocumentEvent以指示它已再次更改。...如果历史记录缓冲区再次回滚另一个更改,则会向两个视图发送另一个DocumentEvent,导致它们将未撤消的突变反映到文档中 - 即删除左侧组件的突变。

2K41

鼠标教鞭:Presentify for mac

想要注释任何屏幕,突出显示光标,Presentify Mac版绝对是您的首选,该软件拥有随时随地画画、高亮显示鼠标指针、撤消/重做支持等强大功能,简便易用非常不错。...按住Shift键的同时,可以用一只手绘制时获得一条直线。您可以绘制时按住Shift键,以半透明的颜色填充矩形圆形。自动删除您的注释。非常适合强调特定内容或解释您的想法。...非常适合现场演示远程工作时的视频通话。通过Sidecar或Astropad连接到Macbook的iPad上运行。与XP笔一起使用。...4、撤消/重做支持注释时不必担心错误。5、多屏支持多个屏幕上进行注释,而不必打开/关闭注释。为每个屏幕保存的会话,因此屏幕之间切换时无需切换控件,颜色等。...每个屏幕都有自己的撤消/重做堆栈,因此您会意外擦除看不见的内容。6、白板如果需要,可以白板上绘制(不要在其他应用程序上绘制)。您甚至可以将白板的颜色更改为您想要的颜色。

78040

如何使用 Git 撤消(几乎)任何操作

Git 中,“撤消”可能意味着许多略有不同的事情。 当你进行新的 commit 时,Git 会及时存储你的仓库该特定时刻的快照;之后,你可以使用 Git 返回到项目的早期版本。...请记住:你以这种方式“撤消”的任何更改实际上都会消失。它们从未被 commit ,因此 Git 无法帮助我们稍后恢复它们。确保你知道你在这里扔掉了什么! (也许使用 git diff 来确认。)...Git 会定期清理“无法访问”的对象。不要指望 reflog 一直发现几个月前的 commit 。 • 你的转发记录是你的,并且只属于你。...批量撤消/重做 场景: 你从一个方向开始功能开发,但在中途,你意识到另一种解决方案更好。你有十几个 commit ,但你只想要其中的一些,不想要其它的了。...由于它现在被忽略,你将不会在 git status 中看到该文件,也不会意外地再次 commit 该文件的更改。 这就是使用 Git 撤消任何操作的方法。

16110

如何使用 Git 撤消(几乎)任何操作

Git 中,“撤消”可能意味着许多略有不同的事情。 当你进行新的 commit 时,Git 会及时存储你的仓库该特定时刻的快照;之后,你可以使用 Git 返回到项目的早期版本。...请记住:你以这种方式“撤消”的任何更改实际上都会消失。它们从未被 commit ,因此 Git 无法帮助我们稍后恢复它们。确保你知道你在这里扔掉了什么! (也许使用 git diff 来确认。)...Git 会定期清理“无法访问”的对象。不要指望 reflog 一直发现几个月前的 commit 。 • 你的转发记录是你的,并且只属于你。...批量撤消/重做 场景: 你从一个方向开始功能开发,但在中途,你意识到另一种解决方案更好。你有十几个 commit ,但你只想要其中的一些,不想要其它的了。...由于它现在被忽略,你将不会在 git status 中看到该文件,也不会意外地再次 commit 该文件的更改。 这就是使用 Git 撤消任何操作的方法。

15810

如何使用 Git 撤消(几乎)任何操作

Git 中,“撤消”可能意味着许多略有不同的事情。 当你进行新的 commit 时,Git 会及时存储你的仓库该特定时刻的快照;之后,你可以使用 Git 返回到项目的早期版本。...请记住:你以这种方式“撤消”的任何更改实际上都会消失。它们从未被 commit ,因此 Git 无法帮助我们稍后恢复它们。确保你知道你在这里扔掉了什么! (也许使用 git diff 来确认。)...Git 会定期清理“无法访问”的对象。不要指望 reflog 一直发现几个月前的 commit 。 • 你的转发记录是你的,并且只属于你。...批量撤消/重做 场景: 你从一个方向开始功能开发,但在中途,你意识到另一种解决方案更好。你有十几个 commit ,但你只想要其中的一些,不想要其它的了。...由于它现在被忽略,你将不会在 git status 中看到该文件,也不会意外地再次 commit 该文件的更改。 这就是使用 Git 撤消任何操作的方法。

25410

TypeScript设计模式之备忘录、命令

下面用TypeScript简单实现一个命令模式备忘录模式的undo/redo: 遥控器算是典型的命令模式,按个按钮就可以命令电视做相关响应,假设遥控器有三种功能,开、关换台。...可以由个专门的管理器来管理,建个undo/redo管理器: 管理器要做的事有 使用备忘录按顺序记住所有command undo/redo操作,并记住undo/redo到了哪一步 当undo/redo到了某一步时,再次有新的...memoItem.command.undo(memoItem.param, lastMemoItem.param); } } 抽象个Command, Command需要做到执行命令、撤消上次所做的操作及重做...-> 撤消 -> 重做 -> 11频道 -> 12频道 -> 撤消 -> 撤消 -> 关电视 预期结果: open -> 3 -> 4 -> 7 -> 4 -> 3 -> 4 -> 11 -> 12...-> 11 -> 4 -> close 从11回到4是因为push 11频道时的command是4,也就是7已经被删掉了。

76560

最新iOS设计规范六|10大交互规范(User Interaction)

简要而准确地描述要撤消重做的操作。撤消重做警示框的标题自动包含前缀“撤消”或“重做”(包括尾随空格)。你需要提供一到两个词用于描述撤消重做的内容,以显示在此前缀之后。...虽然你可以通过编程方式为摇晃手势赋予多种含义,但这可能让用户感到困惑无法预测。 谨慎提供撤消重做按钮。当APP提供多种方法来执行相同的任务时,这会令人困惑。...如果你的APP确实需要专门的撤消重做按钮,请使用系统提供的图标并将它们放在预期的位置,例如导航栏。 仅在当前上下文中执行撤消重做操作。...考虑提供自定义撤消重做按钮,以便应用程序紧凑环境中运行时显示。...当用户无法立即撤消拖放操作时,请考虑提供一种微妙直观的退出方式。 十三、指针(Pointers) iPadOS 13.4引入了动态指针效果行为,可增强iPad上使用定点设备的体验。

3.9K30

MySQL 8.0.21中UNDO截断的改进

隐式截断 默认情况下,隐式方法MySQL 8.0中为ON。设置innodb_undo_log_truncate(默认= ON)innodb_max_undo_log_size(默认= 1GB)。...一旦新的表空间准备就绪,它将再次变为活动状态。...因此,MySQL 8.0.21中,删除了关联的撤消数据文件之后,InnoDB现在将那些页面留在缓冲池中。InnoDB知道这些页面用于已删除的表空间ID。由于页面变得很少使用,它们将被动释放。...如果发生这种情况,那么同一UNDO表空间的512个不同版本的缓冲池中可能有页面,或者重做日志中可能有更改。压力测试中,这导致InnoDB中的判断提示失败。我们的QA小组可以再现这一情景。...因此,为避免这种情况,InnoDB不再允许两个检查点之间发生超过64个相同的撤消表空间的截断。 这种小小的性能改进是InnoDB不断提高的另一种方式。

1.3K30

每日一练:完全恢复与不完全恢复概念

许多情况下,这是理想的目标,因为可能对数据库进行了一些需要撤消的更改。恢复到过去的某个点是解决用户误操作的一种方法。 2. 完全恢复过程 ?...以下步骤描述了完全恢复期间发生的情况: 从备份中恢复损坏或丢失的文件。 根据需要应用增量备份、归档重做日志文件和在线重做日志文件的更改。...也就是说,不应用在最近备份之后生成的所有重做记录。只有绝对必要时才执行这种类型的恢复,如解决用户的误操作问题。...过度恢复状态:State of over-recovery:现在数据文件包含一些已提交一些未提交的事务,因为重做日志包含未提交的数据。...使用ALTER DATABASE OPEN命令:应用undo之前打开数据库。这是为了提供更高的可用性。 5.应用undo数据:应用重做的同时,也应用了支持undo数据文件的重做日志。

73220

Vs Code 2020年6月(1.47版)

新的JavaScript调试器 -终端中进行调试,支持配置文件。 源代码管理统一视图 -所有存储库显示单个视图中。 查看排序挂起的更改 -以树或列表的形式查看文件,按名称,路径或状态排序。...笔记本UI更新 -改进的UX撤消/重做支持。 远程开发教程 -学习容器内WSL中通过SSH开发。...笔记本电脑热出口支持 我们笔记本中添加了“热出口”支持,以允许扩展程序处理备份还原。现在,未保存的本地更改可以通过扩展序列化并在重新打开工作区时恢复。...撤消/重做增强 我们增加了对扩展的支持,以有助于撤消/重做堆栈。扩展现在可以控制哪些操作是不可撤消的。...例如,GitHub问题笔记本中,您可以选择“ 锁定”按钮将单元格内容设置为只读,还可以通过常规的“撤消/重做”命令撤消/重做此操作。

4.5K30

100 条 Linux vim 命令备忘单,收藏起来随时备用!

强行写入当前文件并退出 插入命令备忘单 a 光标后插入 A 在行尾插入 i 光标前插入 I 在行中的第一个非空白之前插入 gI 第 1 列中插入 o 光标下方开始新行并插入 O 光标上方开始新行并插入...Ctrl+ r重做 .重复上一个命令 移动命令备忘单 h向左移动光标 j向下移动光标 k向上移动光标 l向右移动光标 b移动到单词的开头 w移动到下一个单词的开头 e移动到单词的末尾 0跳到行首 $...R 替换从光标位置开始的字符 cc 替换整行 :%s/search/replace/g 用replace替换每次出现的搜索 :%s/search/replace/gc 用确认替换替换每次出现的搜索 撤消重做命令备忘单...u 撤消上次更改 Ctrl+r 重做撤消的更改 标签命令备忘单 :tabe 新选项卡中打开文件 :tabp 转到上一个选项卡 :tabn 转到下一个选项卡 :tabs 列出所有选项卡 :tabfirst...文件名” :vsplit filename垂直分屏显示当前文件“文件名” :!

1.5K20

数据库复习题 考试题库(简答题)

两者的区别联系是什么? 基本表是实际存储在数据库中的二维表,它是本身独立存在的表,SQL中一个关系就对应一个表。 视图是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制。...把数据的修改写到数据库把对数据的修改操作写到日志文件是两个不同的操作,两个操作之间可能会发生故障如果先写了数据库修改,而在日志文件中没有登记这个修改,恢复的时候就无法恢复这个修改了;如果先写日志,...因此恢复操作就是要撤消故障发生时未完成的事务,重做已完成的事务。...发生介质故障后,磁盘上的物理数据日志文件被破坏,恢复方法是重装数据库,然后重做已完成的事务。...转储可分为静态转储动态转储。静态转储是系统中无运行事务时进行的转储操作。动态转储是指转储期间允许对数据库进行存取或修改。即转储用户事务可以并发执行。 转储还可分为海量转储增量转储两种方式。

3K10

vim入门

老高就来慢慢总结一下VIM的常用命令技巧吧!...复制,粘贴 快捷键 作用 v 从光标当前行开始,光标经过的行都会被选中,再按一下v结束 V 从光标当前行开始,光标经过的行都会被选中,再按一下V结束 Ctrl + v 从光标当前位置开始,选中光标起点终点所构成的矩形区域...寄存器取出内容粘贴) "+y 复制到系统剪贴板(也就是vim的+寄存器) 删除 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ d 删除 x 删除字符 dd 删除一行 J 删除换行符,两行合并为一行 重做...↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ u 撤销 CTRL + R 反转撤消 U 一次撤消对一行的全部操作 第二次使用该命令则会撤消前一个U的操作 追加 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓...将光标移动到当前行行尾 = END key ^ 将光标移动到当前行的第一个非空白字符上 0(数字) 总是把光标移动到当前行的第一个字符上 1$ 将光标移动到当前行行尾 2$ 将光标移动到下一行的行尾 注意 ^

31030

Human Interface Guidelines —— Edit Menus

Edit Menu 人们可以文本区域,text view,web view 或 image view 中长按或双击一个元素,来选择内容并弹出编辑选项,例如复制粘贴。...虽然无法更改 menu 的形状,但它的位置是可配置的——您可以防止它遮住重要的内容或一部分界面。...·使编辑操作可撤消 Edit Menu 执行操作前不需要确认,因为某人在执行操作后可能会改变主意,因此请务必提供撤消重做选项。...·系统提供的命令之后显示自定义命令 不要在系统提供的命令中放入自定义命令,因为系统命令是众所周知且经常使用的。 ·使自定义命令的数量最少 不要让太多选择吞没用户。...使用 title-style 的大小写——除了文章、并列连词四个或更少字母的介词之外,每个单词都要大写。

57360

Vim命令–日常使用的Vim备忘单

点击▲关注 “cu技术社区”给公众号置顶 更多精彩 第一时间直达 VI改进的文本编辑器或VIM文本编辑器是一个可用于CLIGUI界面的开源解决方案。...本篇文章中,您将找到CLI界面中使用文本文件时所需的大部分Vim命令。 ? vim命令首先在Vim文本编辑器中打开文件,使用以下命令Vim CLI界面中打开文件。...Vim文本编辑器具有两种不同的mod插入模式命令模式。 vim myfilename 插入模式:当您需要在文件中写入普通文本时,只需按i进入插入模式即可开始写入。写入后按Esc键,返回到命令模式。...以下是基本的vim命令列表– :help [keyword] –搜索有关特定关键字的帮助 u –撤消上一次执行的命令 Ctrl + r –重做撤消命令 0 –按零(0)将光标移动到行首 $ –将光标移到行尾...另外,如果我错过一些基本命令,可以评论中补充。 ——更多精彩?——

56930
领券