【问题标题】:How to enable own menu item in SwiftUI app如何在 SwiftUI 应用程序中启用自己的菜单项
【发布时间】:2020-12-13 06:15:30
【问题描述】:

我有带有情节提要菜单的 SwiftUI 应用程序,我在其中添加了我自己的项目,当我运行该应用程序时该项目被禁用。我创建了以下类以使其启用,并从 AppDelegate 中的 applicationDidFinishLaunching 调用 initMenu 方法,但菜单项仍处于禁用状态,我还需要做什么或额外的操作才能使其启用?

class MenuActions: NSObject {

func initMenu() {
    let mainMenu = NSApplication.shared.mainMenu
    mainMenu?.autoenablesItems = false
    mainMenu?.item(at: 1)?.submenu?.item(at: 0)?.isEnabled = true
}

@IBAction func new(_ sender: NSMenuItem) {
    print("fired")
}

}

【问题讨论】:

    标签: swiftui menuitem


    【解决方案1】:

    在 AppDelegate 中,您只需添加 IBaction

    @IBAction func new(_ sender: NSMenuItem) {
        print("fired")
    }
    

    然后将 Storyboard 文件中的 Menu Item 与该功能连接起来,默认启用。

    编辑:

    您可以创建自己的 Menu 类来处理 MenuItems 操作,如下所示:

    class MenuItems : NSObject {
        @IBAction func new(_ sender: NSMenuItem) {
            print("fired")
        }
    }
    

    然后将情节提要中的Object 添加到应用程序场景,并将您的自定义类设置为该对象。此后连接您的 IBactions

    【讨论】:

    • 太好了,谢谢。有没有办法将@IBAction 放在 AppDelegate 之外的其他地方?只是为了好奇。
    • 是的,您也可以创建自定义类,将其添加到您的故事板并连接 IBaction。以上编辑
    • 很抱歉再次打扰,但您所说的“向应用程序场景添加对象”是什么意思?我可以t make Ctlr-drag connection to IBAction new if its 没有放在 AppDelegate 中。
    • 别担心,你去故事板。然后在 Xcode 的顶部有一个“+”按钮。搜索 Object 并将其添加到 MenuBar 的顶部栏。
    • 非常感谢。
    猜你喜欢
    • 2020-05-05
    • 1970-01-01
    • 2022-11-14
    • 2012-08-19
    • 1970-01-01
    • 2021-02-13
    • 2021-05-08
    • 2012-04-08
    • 2016-06-13
    相关资源
    最近更新 更多