我發現問題Creating NSMenu with NSMenuItems in it, programmatically? 但未能讓解決方案在我的應用程式中作業。我嘗試結合問題中的代碼和接受的答案來獲得以下資訊:
NSMenu *fileMenu = [[NSMenu alloc] initWithTitle:@"File"];
NSMenuItem *newMenu = [[NSMenuItem alloc] initWithTitle:@"New" action:NULL keyEquivalent:@""];
NSMenuItem *openMenu = [[NSMenuItem alloc] initWithTitle:@"Open" action:NULL keyEquivalent:@""];
NSMenuItem *saveMenu = [[NSMenuItem alloc] initWithTitle:@"Save" action:NULL keyEquivalent:@""];
[fileMenu addItem: newMenu];
[fileMenu addItem: openMenu];
[fileMenu addItem: saveMenu];
NSMenuItem *fileMenuItem = [[NSMenuItem alloc] init];
[fileMenuItem setSubmenu: fileMenu];
[[NSApp mainMenu] addItem: fileMenuItem];
[fileMenuItem release];
沒有File創建選單。將上述代碼放置在 main 函式中的其他代碼之前或之后是無關緊要的。我也嘗試放置applicationDidFinishLauching無濟于事。為什么上面的代碼無法運行,如何在不使用任何 XIB 或 Storyboard 檔案的情況下為我的應用程式提供選單?
uj5u.com熱心網友回復:
您只需要添加一個選單欄即可讓您的代碼運行。也可以使用 addItemWithTitle: 并節省幾行代碼。如果您不將每個 menuItem 連接到某個方法,它們將顯示為灰色。-buildMenu 通常從 AppDelegate 中的 -applicationWillFinishLaunching: 呼叫。
- (void) menuAction: (id)sender {
NSLog(@"%@", sender);
}
- (void) buildMenu {
// **** Menu Bar **** //
NSMenu *menubar = [NSMenu new];
[NSApp setMainMenu:menubar];
// **** App Menu **** //
NSMenuItem *appMenuItem = [NSMenuItem new];
NSMenu *appMenu = [NSMenu new];
[appMenu addItemWithTitle: @"Quit" action:@selector(terminate:) keyEquivalent:@"q"];
[appMenuItem setSubmenu:appMenu];
[menubar addItem:appMenuItem];
// **** File Menu **** //
NSMenuItem *fileMenuItem = [NSMenuItem new];
NSMenu *fileMenu = [[NSMenu alloc] initWithTitle:@"File"];
[fileMenu addItemWithTitle:@"New" action:@selector(menuAction:) keyEquivalent:@""];
[fileMenu addItemWithTitle:@"Open" action:@selector(menuAction:) keyEquivalent:@""];
[fileMenu addItemWithTitle:@"Save" action:@selector(menuAction:) keyEquivalent:@""];
[fileMenuItem setSubmenu: fileMenu];
[menubar addItem: fileMenuItem];
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/511263.html
標籤:目标-c苹果系统可可
