swift - 在 macOS 上额外添加菜单栏
问题描述
我正在尝试创建一个将在 macOS 上额外显示菜单栏的应用程序。
到目前为止,我使用了很多我在网上找到的代码,但是,虽然它们都可以编译,但没有一个真正显示菜单。
代码片段或多或少是这样的:
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var statusBarItem: NSStatusItem!
func applicationDidFinishLaunching(_ aNotification: Notification) {
let statusBar = NSStatusBar.system
statusBarItem = statusBar.statusItem(
withLength: NSStatusItem.squareLength)
statusBarItem.button?.title = ""
let statusBarMenu = NSMenu(title: "Cap Status Bar Menu")
statusBarItem.menu = statusBarMenu
statusBarMenu.addItem(
withTitle: "Order a burrito",
action: #selector(AppDelegate.orderABurrito),
keyEquivalent: "")
statusBarMenu.addItem(
withTitle: "Cancel burrito order",
action: #selector(AppDelegate.cancelBurritoOrder),
keyEquivalent: "")
}
@objc func orderABurrito() {
print("Ordering a burrito!")
}
@objc func cancelBurritoOrder() {
print("Canceling your order :(")
}
菜单上不显示任何内容。我需要启用什么才能使其显示菜单吗?我也尝试了图像,它也不起作用。
解决方案
有趣的。我做了同样的教程,我没有任何问题。
https://8thlight.com/blog/casey-brant/2019/05/21/macos-menu-bar-extras.html
这是我的代码中的内容。
--
// at the top
import Cocoa
import SwiftUI
// first lines of the class AppDelegate
var window: NSWindow! // I don't think this is important
var statusBarItem: NSStatusItem!
// top lines of applicationDidFinishLaunching
// Create the SwiftUI view that provides the window contents.
let contentView = ContentView()
// Menu Bar Extras
let statusBar = NSStatusBar.system
statusBarItem = statusBar.statusItem(withLength: NSStatusItem.squareLength)
statusBarItem.button?.title = ""
let statusBarMenu = NSMenu(title: "Cap Status Bar Menu")
statusBarMenu.addItem(
withTitle: "Order a burrito",
action: #selector(AppDelegate.orderABurrito),
keyEquivalent: ""
)
statusBarMenu.addItem(
withTitle: "Cancel burrito order",
action: #selector(AppDelegate.cancelBurritoOrder),
keyEquivalent: ""
)
statusBarItem.menu = statusBarMenu
// the rest is window creation code
// more methods of the AppDelegate
// make sure this part of the code is correct to be
// "superstitious"; maybe Xcode does not behave properly
// with the @objc keywords/modifiers/decorators
@objc func orderABurrito() {
print("Ordering a burrito!")
}
@objc func cancelBurritoOrder() {
print("Cancelling order...")
}
否则,我建议您重新学习本教程,以防您第一次没有看到某些内容。祝你好运,编码愉快。
推荐阅读
- css - sass亮度函数查询
- javascript - 一旦满足特定条件,如何禁用点击事件?
- c# - 使用while循环在二维数组列表中的C#用户输入选择
- php - preg_match_all 输出 PHP 中的奇怪数组结构
- c++ - 使用 new 声明数组后的 delete[] 关键字导致错误
- mysql - MySQL Workbech ERROR 1064 Insert 问题不知道出在哪里?
- tensorflow - 将二进制掩码转换为张量流中的边界框
- excel - 根据出现匹配多个条目
- java - 将定义的 Jframe 大小转换为基于屏幕大小的自动调整大小
- c++ - 使用 abs() 时,它显示“abs is ambiguous”,但是当我在另一个编辑器上尝试它时它可以工作