OS X API:定义管理应用程序菜单的对象的类
将 NSMenuItem 添加到 NSApp.MainMenu 不插入新菜单项
我使用以下代码以编程方式添加新的菜单项 覆盖 func viewDidLoad() { 让 mainMenu = NSApp.mainMenu 让 myMenu = NSMenuItem(标题: "MenuTitle", 操作:...
如何在不使用菜单的情况下获取 SwiftUI 中视图的菜单样式?
我有一个使用 NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength) 的状态菜单。我正在移植一个具有许多视图和状态属性的 MenuBarExtra。我想避免使用
我有一个用 Objective-C 编写的 macOS 应用程序。最初,我不想提供“帮助”菜单,因此我从故事板中删除了“帮助”顶级菜单项。 现在我想添加一个帮助工具,并且...
我正在使用 SwiftUI 和新的应用程序生命周期构建 macOS 应用程序。 我很想更改“关于窗口”的内容(当您点击应用程序菜单中的“关于 DemoApp”时出现),但没有...
如何使用 objc2 将 Rust 函数作为选择器传递到 NSMenuItem.action 中?
我有下一个代码来在AppDelegate中构建应用程序菜单(AppDelegate代码取自官方示例): 实现 AppDelegate { fn new(mtm:MainThreadMarker,菜单:选项 我有下一个代码用于在AppDelegate中构建应用程序菜单(AppDelegate代码取自官方示例): impl AppDelegate { fn new(mtm: MainThreadMarker, menu: Option<Menu>) -> Id<Self> { let this = mtm.alloc(); let this = this.set_ivars(Ivars { mtm, menu, }); unsafe { msg_send_id![super(this), init] } } fn build_menu(&self, menu: &Menu, ns_menu: &Id<NSMenu>) { let ivars = self.ivars(); for item in menu.items.iter() { let ns_menu_item = NSMenuItem::new(ivars.mtm); let title = NSString::from_str(&item.name); unsafe { ns_menu_item.setTitle(&title) }; if let Some(on_click) = &item.on_click { unsafe { ns_menu_item.setAction(Some(on_click)) }; } if let Some(submenu) = &item.submenu { let ns_submenu = NSMenu::new(ivars.mtm); self.build_menu(submenu, &ns_submenu); ns_menu_item.setSubmenu(Some(&ns_submenu)); } ns_menu.addItem(&ns_menu_item); } } fn create_menu(&self, application: Id<NSApplication>) { let ivars = self.ivars(); if let Some(menu) = &ivars.menu { let main_menu = NSMenu::new(ivars.mtm); application.setMainMenu(Some(&main_menu)); self.build_menu(menu, &main_menu); } } } 问题出在这部分代码: if let Some(on_click) = &item.on_click { unsafe { ns_menu_item.setAction(Some(on_click)) }; } on_click: fn()是一个Rust函数,我不知道如何使用objc2将其作为Objective-C选择器传递。 在生成的 AppKit 中,该方法如下所示: #[method(setAction:)] pub unsafe fn setAction(&self, action: Option<Sel>); 我很确定有一种更简单的方法,但是...我已经使用自定义 NSMenuItem 类解决了我的问题: #[derive(Debug)] #[allow(unused)] struct MacMenuItemIvars { action: Option<fn()>, } declare_class!( struct MacMenuItem; unsafe impl ClassType for MacMenuItem { type Super = NSMenuItem; type Mutability = mutability::MainThreadOnly; const NAME: &'static str = "MenuItem"; } impl DeclaredClass for MacMenuItem { type Ivars = MacMenuItemIvars; } unsafe impl MacMenuItem { #[method(callback)] fn __callback(&self) { if let Some(action) = self.ivars().action { action(); } } } unsafe impl NSObjectProtocol for MacMenuItem {} ); impl MacMenuItem { fn new<S>(mtm: MainThreadMarker, title: S, action: Option<fn()>) -> Id<Self> where S: Into<String>, { let this = mtm.alloc(); let this = this.set_ivars(MacMenuItemIvars { action, }); let item: Id<MacMenuItem> = unsafe { msg_send_id![super(this), init] }; let title: String = title.into(); let title = NSString::from_str(&title); unsafe { item.setTitle(&title) }; if action.is_some() { unsafe { item.setTarget(Some(&item)) }; unsafe { item.setAction(Some(sel!(callback))) }; } item } } 必须有一种方法可以使用 Objective-C 块达到相同的结果。不过我没明白怎么办。
我想制作一个自定义弹出菜单,在深色背景上有浅色文本。我知道 NSMenuItem 的 setView: 方法,我可以用它来使每个项目在深色
我想在登录过程成功完成后以及用户注销后更改菜单项的标题。 但如果我登录并检查菜单项的标题,它并没有改变...
我想在 Swift 中获取主 NSMenu 以执行以下代码 NSMenu(title: "ApplicationName").autoenablesItems = false。我不知道插入什么作为标题,因为似乎...
我的 NSMenuItems 上有一个自定义 (SwiftUI) 视图。当我没有子视图时,按钮和水龙头工作正常。但是一旦我添加了一个子菜单,基本项目就会变得没有反应。 我试过设置...
我正在NSMenuItem中使用一个非常简单的自定义视图(仅包含一个只读NSTextField和一个NSSegmentedControl)(使用-setView:方法)。这部分工作正常。这是问题所在:...
我有一个macOS菜单栏应用程序,当用户单击菜单栏中的图标(NSStatusBarButton)时,该应用程序会显示NSMenu。我想实现一个功能,用户可以启用切换以强制使用NSMenu ...
我有一个像这样的标准NSMenu这个菜单是用以下代码创建的:NSMenu * menu = [[NSMenu alloc] init]; NSMenuItem * addMenuItem = [[NSMenuItem alloc] init]; [addMenuItem setTitle:[NSString ...
我不知道如何在NSMenu中设置NSMenuItem的字体/样式。我在NSMenu上尝试了setFont方法,但似乎对菜单项没有任何影响。 NSMenuItem不是...
我正在实现一个自定义的NSToolbarItem,它具有一个按钮和一个下拉菜单,例如Mail。但是,唯一不起作用的是禁用了NSMenuItem。无论我做什么,我都做不到...
我要实现的目标,我正在寻找一种在NSMenuItem中显示标题标签和详细文本标签的方法。最好看起来像这样:标题标签与...
“ Control Click”是否与macOS的“右键单击”相同?
我有一个NSTableView,其中的单元格是NSTextField。我将菜单分配给文本字段。当我右键单击单元格时,应该打开菜单。我的第二次点击等于点击...
为什么我的应用程序仅在菜单项位于AppDelegate中时才能看到菜单项的选择器?
我正在Swift中构建我的第一个macOs应用。我设法将菜单(NSMenu)添加到“菜单栏附加”图标,但是当菜单加载时,每个菜单项都显示为停用。我了解这是...
我已经为我的子类NSMenuItem(位于NSStatusMenu中)添加了一个自定义视图,这意味着默认情况下它不会被蓝色/灰色背景“突出显示”。我通过......实现了这一点
validateMenuItem或menuWillOpen未调用NSMenu
我的Mac应用程序有一个NSMenu,它的委托函数validateMenuItem和menuWillOpen从不被调用。到目前为止,网上的解决方案都没有帮助。看起来我做的一切都是正确的:......
我的应用程序具有默认的“帮助”菜单。我已删除“帮助”条目,并添加了一个支持条目,该条目链接到我网站上的论坛。帮助菜单笔尖看起来像这样:但是一旦我有了应用程序并且......