我正在尝试从AppDelegate构建我的主菜单,我已经断开了我的故事板文件,我正在使用一个main. swift文件加载我的应用程序作为@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]
}
}
}
1条答案
按热度按时间nbysray51#
下面的源代码将为swift创建一个基本菜单。要在Xcode中运行,请创建一个Swift项目,删除AppDelegate文件的内容,并将其替换为以下内容。然后将AppDelegate.swift文件的名称更改为main.swift并运行。该窗口已经可以关闭,因此我没有为此添加多余的菜单项。