【发布时间】:2023-02-04 00:52:57
【问题描述】:
我正在尝试从 AppDelegate 构建我的 mainMenu,我已经断开我的 Storyboard 文件并且我正在使用 main.swift 文件加载我的应用程序作为 @main我尝试了这个代码来构建我的菜单,但它不起作用,功能不创建我的项目,我也没有错误或问题,我认为创建的菜单无法插入我的应用程序。
我的 main.swift 文件:
import Cocoa
// 1
let app = NSApplication.shared
let delegate = AppDelegate()
app.delegate = delegate
// 2
_ = NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv)
import Cocoa
import SwiftUI
class AppDelegate: NSObject, NSApplicationDelegate {
private var window: NSWindow!
func applicationDidFinishLaunching(_ aNotification: Notification) {
window = NSWindow(
contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
backing: .buffered, defer: false)
window.center()
window.setFrameAutosaveName("Main Window")
window.title = "No Storyboard Window"
window.contentView = NSHostingView(rootView: ContentView())
window.makeKeyAndOrderFront(nil)
customMainMenu()
}
func customMainMenu() {
if let appMainMenu = NSApp.mainMenu {
let mainMenu = NSMenuItem()
mainMenu.submenu = NSMenu(title: "MainMenu")
let mainMenuItem1 = NSMenuItem(title: "Close", action: #selector(NSWindow.performClose(_:)), keyEquivalent: "w")
mainMenuItem1.keyEquivalentModifierMask = .command
let mainMenuItem2 = NSMenuItem(title: "Quit", action: #selector(NSApplication.shared.terminate(_:)), keyEquivalent: "q")
mainMenuItem2.keyEquivalentModifierMask = .command
mainMenu.submenu?.items = [mainMenuItem1, mainMenuItem2]
appMainMenu.items = [mainMenu]
}
}
}
【问题讨论】:
标签: swift macos cocoa appdelegate