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

菜单中未显示UndoManager.setActionName (SwiftUI macOS)

菜单中未显示UndoManager.setActionName (SwiftUI macOS)是一个关于SwiftUI在macOS平台上的一个问题。在SwiftUI中,UndoManager是一个用于管理撤销和重做操作的类。它允许用户撤销和重做他们在应用程序中进行的操作。

在macOS上,当我们使用SwiftUI构建应用程序时,我们可能会遇到菜单中未显示UndoManager.setActionName的情况。这是因为在macOS上,菜单栏是由AppKit框架提供的,而不是SwiftUI框架。因此,我们需要使用AppKit框架中的一些特定方法来处理撤销和重做操作。

要在菜单中显示UndoManager.setActionName,我们可以按照以下步骤进行操作:

  1. 首先,我们需要在我们的macOS应用程序的AppDelegate中创建一个NSUndoManager实例,并将其分配给NSApp的undoManager属性。这将确保我们的应用程序具有一个全局的UndoManager实例。
代码语言:txt
复制
import AppKit

class AppDelegate: NSObject, NSApplicationDelegate {
    func applicationDidFinishLaunching(_ notification: Notification) {
        NSApp.undoManager = UndoManager()
    }
}
  1. 接下来,我们需要在我们的视图中使用NSViewRepresentable来包装我们的SwiftUI视图,并在其中实现撤销和重做操作。
代码语言:txt
复制
import SwiftUI
import AppKit

struct ContentView: View {
    @Environment(\.undoManager) private var undoManager
    
    var body: some View {
        // Your SwiftUI content here
    }
}

struct NSViewRepresentableWrapper: NSViewRepresentable {
    typealias NSViewType = NSView
    
    func makeNSView(context: Context) -> NSView {
        let view = NSView()
        view.undoManager = context.coordinator.undoManager
        return view
    }
    
    func updateNSView(_ nsView: NSView, context: Context) {
        nsView.undoManager = context.coordinator.undoManager
    }
    
    func makeCoordinator() -> Coordinator {
        Coordinator()
    }
    
    class Coordinator: NSObject {
        let undoManager = UndoManager()
    }
}
  1. 最后,我们需要在我们的菜单中添加撤销和重做操作。我们可以使用NSApplicationDelegate的方法来处理菜单项的点击事件,并调用undo和redo方法。
代码语言:txt
复制
class AppDelegate: NSObject, NSApplicationDelegate {
    // ...
    
    @IBAction func undo(_ sender: Any?) {
        NSApp.sendAction(#selector(UndoManager.undo), to: nil, from: sender)
    }
    
    @IBAction func redo(_ sender: Any?) {
        NSApp.sendAction(#selector(UndoManager.redo), to: nil, from: sender)
    }
}

现在,当我们在我们的应用程序中进行操作时,我们将能够在菜单中看到Undo和Redo选项,并且它们将正确地调用UndoManager的撤销和重做方法。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,我无法提供相关链接。但你可以通过访问腾讯云官方网站,了解他们的云计算产品和服务。

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

相关·内容

WordPress 设置登录用户和登录用户显示不同的菜单

如果让登录用户与登录浏览者,显示不同的菜单,可以通过下面的代码实现: 将下面代码添加到当前主题函数模板functions.php: if( is_user_logged_in() ) { $args...return $args; } add_filter( 'wp_nav_menu_args', 'wpc_wp_nav_menu_args' ); 之后分别新建logged-in和logged-out两个菜单...,用于登录状态下和普通浏览者显示菜单。...如果主题有多个菜单,可以通过下面的代码在指定菜单位置显示不同的菜单: function wpc_wp_nav_menu_args( $args = '' ) { if( is_user_logged_in...'; } } return $args; } add_filter( 'wp_nav_menu_args', 'wpc_wp_nav_menu_args' ); 也可以利用上面的方法,让不同的用户角色显示不同的菜单内容

2.9K20
  • 优化在 SwiftUI List 显示大数据集的响应效率

    也就是当显示主界面菜单时,列表视图已经完成了实例的创建(可以通过在 ListEachRowHasID 的构造函数添加打印命令得以证明),因此也不应是实例化列表视图导致的延迟。...在 SwiftUI 视图的生命周期研究[3] 一文,我对 List 如何对子视图的显示进行优化做了一定的介绍。...也会对滚动过程进行显示优化,滚动过程至多实例化 100 多个 ItemRow 。...标识( Identity )是 SwiftUI 在程序的多次更新识别相同或不同元素的手段,是 SwiftUI 理解你 app 的关键。...升降序切换 对数据进行降序显示且仅允许使用者手工滚动列表。系统的邮件、备忘录等应用均采用此种方式。

    9.2K20

    打造可适配多平台的 SwiftUI 应用

    图片mac 版本进行了更多符合 macOS 风格的适配,例如:使用了符合 mac 规范的设置视图、支持指针悬浮响应、菜单栏图标,并且支持创建新窗口并直接跳转到特定电影类别(基于数据驱动的 WindowGroup...由于 iPhone 只支持单窗口模式,通常我们不会太注意它的存在,但在 iPadOS 以及 macOS 这些支持多窗口的系统,则代表着,每次创建一个新窗口(在 macOS ,通过菜单的新建来创建新窗口...通过点击任意窗口中任意 Tab 的 “Hit Me” 按钮来增加点击次数。点击次数显示在窗口的上方。...onAppear { sceneID = UUID() ...}这个问题,同样出现在“电影猎手”创建 overlayContainer 的场景( 用于显示全屏电影剧照 ),也是采用上述的方法才得以解决...为了让“电影猎手”更符合 macOS 应用的规范,我们将视图移动到菜单,并在 mac 代码取消了 TabView。

    3.2K80

    Ask Apple 2022 与 SwiftUI 有关的问答(上)

    是否有任何建议用来检测列表的行选择,类似于 “NavigationLink”,但不导航到另一个视图(例如,显示 Sheet 或从列表中选择一个选项 )?...在 SwiftUI 4.0 ,contextMenu 的功能获得了不小的提高。例如一个上下文菜单可以有多个选项、支持 primaryAction、以及可定制预览视图。...锁定 Charts 纵轴刻度Q:我有一个 Swift 图表,通过监听拖动事件实现在拖动过程显示一个 RuleMark。在拖动过程,Y 轴的刻度会变大。...SwiftUI 4.0 ,WindowGroup 获得了相当大的更新,真正具备了开发 macOS 应用的能力。...A:在 macOS Ventura ,我们在 [WindowGroup 上引入了新的 API](https://developer.apple.com/documentation/swiftui/windowgroup

    12.3K20

    Ask Apple 2022 与 SwiftUI 有关的问答(下)

    因此,如果你正在创建一个视图来显示可滚动的内容,并可能进行选择操作,那么在 iOS 和 macOS 上使用 List 将有最好的体验。...Table 中上下文菜单Q:如果我在 TABLE 上添加了一个上下文菜单,我如何确定哪一行导致了菜单显示(无需选择该行)?...Swiftcord[12] 的代码展示了如何在 SwiftUI 下实现倒置列表。阅读 优化在 SwiftUI List 显示大数据集的响应效率[13] 一文,了解苹果工程师推荐的方法。...Too complex to type checkQ:我在 iOS 14 SwiftUI 遇到一个问题,我试图有条件地显示 3 个符合 Shape 协议的对象的一个。.../[12] Swiftcord: https://github.com/SwiftcordApp/Swiftcord[13] 优化在 SwiftUI List 显示大数据集的响应效率: https:/

    14.8K30

    打造可适配多平台的 SwiftUI 应用

    image-20230424090345471 mac 版本进行了更多符合 macOS 风格的适配,例如:使用了符合 mac 规范的设置视图、支持指针悬浮响应、菜单栏图标,并且支持创建新窗口并直接跳转到特定电影类别...由于 iPhone 只支持单窗口模式,通常我们不会太注意它的存在,但在 iPadOS 以及 macOS 这些支持多窗口的系统,则代表着,每次创建一个新窗口(在 macOS ,通过菜单的新建来创建新窗口...通过点击任意窗口中任意 Tab 的 “Hit Me” 按钮来增加点击次数。点击次数显示在窗口的上方。....onAppear { sceneID = UUID() ... } 这个问题,同样出现在“电影猎手”创建 overlayContainer[9] 的场景( 用于显示全屏电影剧照 )...为了让“电影猎手”更符合 macOS 应用的规范,我们将视图移动到菜单,并在 mac 代码取消了 TabView。

    2.1K10

    用 Table 在 SwiftUI 下创建表格

    欢迎大家在 Discord 频道[2] 中进行更多地交流 Table 是 SwiftUI 3.0 macOS 平台提供的表格控件,开发者通过它可以快捷地创建可交互的多列表格。...例如:标题行与数据行( 首行 )重叠;标题行第一列不显示;滚动不顺畅以及某些表现( 行高 )与 macOS 版本不一致等情况。...,更习惯于将数据元素以行( Row )的形式进行展示( 在一行显示数据的不同属性内容 ) 在 Table 数据是懒加载的,行视图( TableColumn )的 onAppear 和 onDisappear...在 macOS 上,如果 Table 的内容( 行宽度 )超过了 Table 的宽度,Table 将自动开启横向滚动支持。...: Bool) 仅用于 macOS,可以设置是否开启行交错背景,便于视觉区分 或许在之后的测试版SwiftUI 会扩展更多的样式到 iPadOS 平台 行选择 在 Table 启用行选择与 List

    4.1K30

    肘子的 Swift 周报 | Swift,超越苹果生态!

    在这个新版本,首次在非苹果平台复刻了 SwiftUI 框架的核心基础——AttributeGraph,从而具备了完整地将 SwiftUI 的优势全面带到其他平台的可能性。...我在过去两年中还了解到两款尚未公开的 SwiftUI 复刻框架,其中一款同样面向全平台。 Swift 也忘记在嵌入式领域的探索。...在实际开发,Edvinas Byla 意识到 LazyVGrid 的性能并不理想,且不能满足他对上下文菜单行为的特定需求,因此他决定采用 NSTableView 作为替代方案。...文章,作者强调他的目的并非是要比较 SwiftUI 与 AppKit 的性能优劣,或者质疑 SwiftUImacOS 上的应用适用性。...实际上,该应用的复杂模板编辑器几乎完全使用 SwiftUI 开发,且表现出色。这一点彰显了 SwiftUI 在实际应用的强大潜力和灵活性。

    14610

    SwiftUI Overlay Container 2 —— 可定制、高效、便捷的视图管理器

    历史 2020 年夏天,在为 健康笔记[2] 添加侧向滑动菜单的过程,我发现在开发中经常会碰到需要在一个视图的上方动态添加另一视图的场景,例如(提示信息、广告、浮动按钮、新手指南等等)。...因此,我写了一个组件希望可以帮助开发者在 SwiftUI 快速完成上述需求。但受限于当时的技术能力,很多的想法都没有能够很好地实现。...设计动机 当我们需要在视图的上层显示新的内容(例如:弹出信息、侧边菜单、帮助提示等)时,有很多优秀的第三方解决方案可以帮助我们分别实现,但没有一个方案可以同时应对不同的场景需求。...在 SwiftUI ,描述视图已经变得十分的容易,因此我们完全可以将上述场景显示逻辑提炼出来,创建出一个可以覆盖更多使用场景的库,帮助开发者组织视图的显示风格和交互逻辑。...使用者通过调用容器管理器的特定方法,让指定的容器执行显示视图、撤销视图等工作。 容器管理器的环境值 在 SwiftUI ,视图代码通过环境值调用容器管理器。

    2.1K20

    Flutter 3.7更新详解

    我们与整个 Flutter 社区们继续在 Flutter 3.7 优化了框架,包括创建自定义菜单栏和层叠式菜单、更好的国际化工具支持、新的调试工具以及其他功能和特性等。...在 macOS 上,你可以使用 PlatformMenuBar widget 来创建菜单栏,你的菜单栏将由 macOS 系统来渲染,而不是使用 Flutter。...Flutter 并发开发指南 将 Flutter 添加到现有的 SwiftUI 应用 为 Flutter 创建多渠道 (针对 Android 和 iOS) 废弃 Bitcode 从 Xcode 14...最后,在 Flutter 视图不再展示时,也会 通知 Dart VM 进行处理,进一步优化了 Flutter 视图显示时的内存占用。...这意味着,使用 Flutter 3.7 以及后续版本构建的桌面端应用程序将不能再在 macOS 10.11、10.12、10.13 版本运行,Flutter 对 macOS 的最低10点要求版本提升至

    3.2K00

    IOS Widget(1):概述

    小组件概述 WidgetKit 通过在 iOS 主屏幕或 macOS 通知中心放置小组件,让用户可以随时访问 App 的内容。Widget 可以保持更新,从而让用户获得最新信息。...当需要更多细节时,点击Widget 会直接带到 App 的适当位置。 Widget 有三种不同的尺寸(小号、中号和大号),可以对 Widget 进行个性化定制。...小组件开发备注 开发工具XCode:Version 12.4 (12D4e) IOS支持版本:iOS 14.0以上 macOS支持版本:macOS 11.0以上 开发小组件要求:小组件的UI开发必须使用...SwiftUI 小组件实现原理   要实现窗口小部件,您可以向应用程序添加窗口Widget Extensio。...您可以使用时间轴提供程序配置窗口小部件,并使用SwiftUI视图显示窗口小部件的内容。时间线提供者告诉WidgetKit何时更新您的窗口小部件的内容。 ?

    1.8K20
    领券