首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftUI macOS响应子视图中的菜单栏操作

SwiftUI macOS响应子视图中的菜单栏操作
EN

Stack Overflow用户
提问于 2020-04-26 05:03:43
回答 1查看 153关注 0票数 0

我的macOS应用程序中有一个视图,当用户按下菜单栏中的undo和redo按钮时,需要通知该视图。在AppDelegate中,我让IBActions在用户按下undo/redo按钮时触发。IBAction通过通知中心发布通知,如下图所示:

代码语言:javascript
复制
extension Notification.Name {

    static let undo = Notification.Name("undo")
    static let redo = Notification.Name("redo")
}

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    @IBAction func menuBarUndo(_ sender: Any) {
        print("AppDelegate: pressed undo")
        nc.post(name: .undo, object: nil)
    }


    @IBAction func menuBarRedo(_ sender: Any) {
        print("AppDelegate: pressed redo")
        nc.post(name: .redo, object: nil)


    }

    let nc = NotificationCenter.default

    // applicationDidFinishLaunching and applicationWillTerminate not shown for brevity

}

在我的ContentView中,有一个函数需要在用户按下undo/redo按钮时触发。它需要从ContentView内部触发,因为它依赖于该视图中包含的数据。如何在ContentView中订阅通知才能触发函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-26 11:48:07

ContentView中,In可以如下所示

代码语言:javascript
复制
var body: some View {
    VStack {
        Text("Demo for receiving notifications")
        .onReceive(NotificationCenter.default.publisher(for: .undo)) { _ in
            /// call undo action
        }
        .onReceive(NotificationCenter.default.publisher(for: .redo)) { _ in
            /// call redo action
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61432578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档