Я ищу простейший пример, который показывает одно окно, открывающее другое окно, а затем закрывающее его.Какао: Создайте и закройте одно окно от другого
Место, где я, похоже, застревает, - это NIB и то, как должны быть подключены розетки. Я могу легко создать окно; закрытие представляет собой вызов.
Любые советы очень ценятся!
Я прикрепляю свой код ниже. Я думаю, что я пытаюсь сделать это просто, но это не сработает. Благодаря Фрэнсису я могу теперь открыть окно и закрыть его, но как только я попытаюсь открыть его снова, приложение выйдет из строя (EXC_BAD_ACCESS
). Я уверен, что это связано с моим плохим пониманием отношения NIB к классам. В большинстве языков мне просто нужно создать экземпляр нового экземпляра окна, а затем закрыть его.
У меня есть 2 окна в MainMenu.xib
. (Я бы предпочел иметь окно в отдельном NIB, но это создает другие проблемы!) AppDelegate имеет 2 выхода, для окна (оригинал) и otherWindow (созданное 2-е окно).
Первое окно имеет 2 кнопки: «Открыть окно » и «Закрыть окно» с подключением к 2 методов в коде.
Код:
MyTestAppDelegate.h
#import <Cocoa/Cocoa.h>
@interface MyTestAppDelegate : NSObject <NSApplicationDelegate> {
NSWindow *window;
NSWindow *otherWindow;
}
@property (assign) IBOutlet NSWindow *window;
@property (assign) IBOutlet NSWindow *otherWindow;
- (IBAction)openOtherWindow:(id)sender;
- (IBAction)closeOtherWindow:(id)sender;
@end
MyTestAppDelegate.c
#import "MyTestAppDelegate.h"
@implementation MyTestAppDelegate
@synthesize window;
@synthesize otherWindow;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application
}
- (IBAction)openOtherWindow:(id)sender
{
[otherWindow makeKeyAndOrderFront:sender];
}
- (IBAction)closeOtherWindow:(id)sender
{
[otherWindow close];
}
@end
Очень важная деталь: это приложение для Mac, а не приложение для iOS. –