如何以编程方式创建 Cocoa 应用程序主菜单应用程序 [关闭]
Posted
技术标签:
【中文标题】如何以编程方式创建 Cocoa 应用程序主菜单应用程序 [关闭]【英文标题】:How to create Cocoa app main menu application programatically [closed] 【发布时间】:2021-02-22 20:45:51 【问题描述】:我正在从头开始创建简单的 Cocoa 应用程序,只是为了学习这个过程。
但是我无法创建应用程序菜单。我有这个代码:
- (void)applicationDidFinishLaunching:(NSNotification *)notification
[self createMenu];
-(void)createMenu
NSMenu* myMenu = [[NSMenu alloc] init];
NSString* quitTitle = @"Quit";
NSMenuItem* quitMenuItem = [[NSMenuItem alloc] initWithTitle:quitTitle
action:@selector(terminate:)
keyEquivalent:@"q"];
[myMenu addItem:quitMenuItem];
[NSApp setMainMenu:myMenu];
但是当我点击菜单栏中的应用程序名称启动应用程序后,没有任何反应
请问我错过了什么?
提前致谢
【问题讨论】:
这个应用程序是否还有更多内容,比如创建一个 NSApplication 实例(控制主事件循环)? 【参考方案1】:-createMenu() 需要从 ApplicationWillFinishLaunching: 中调用,而且菜单本身有一些错误。
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>
- (void)createMenu;
@end
@implementation AppDelegate
-(void)createMenu
NSMenu *menubar = [[NSMenu alloc]init];
NSMenuItem *menuBarItem = [[NSMenuItem alloc] init];
[menubar addItem:menuBarItem];
[NSApp setMainMenu:menubar];
NSMenu *myMenu = [[NSMenu alloc]init];
NSString* quitTitle = @"Quit";
NSMenuItem* quitMenuItem = [[NSMenuItem alloc] initWithTitle:quitTitle
action:@selector(terminate:) keyEquivalent:@"q"];
[myMenu addItem:quitMenuItem];
[menuBarItem setSubmenu:myMenu];
- (void) applicationWillFinishLaunching: (NSNotification *)notification
[self createMenu];
- (void)applicationDidFinishLaunching:(NSNotification *)notification
@end
int main ()
NSApplication *application = [NSApplication sharedApplication];
AppDelegate *appDelegate = [[AppDelegate alloc] init];
[application setDelegate:appDelegate];
[application run];
return 0;
【讨论】:
以上是关于如何以编程方式创建 Cocoa 应用程序主菜单应用程序 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章