あるウィンドウが別のウィンドウを開いてから閉じるという最も簡単な例を探しています。
私が行き詰まっているように見える場所は、NIBとコンセントの配線方法です。ウィンドウを簡単に作成できます。それを閉じることは挑戦を提示します。
どんなアドバイスも大歓迎です!
以下にコードを添付します。私がやろうとしていることは単純だと思いますが、うまくいきません。Francisのおかげで、ウィンドウを開いたり閉じたりできるようになりましたが、もう一度開こうとすると、アプリケーションがクラッシュします(EXC_BAD_ACCESS
)。これは、NIBとクラスの関係についての私の理解が不十分なためだと確信しています。ほとんどの言語では、ウィンドウの新しいインスタンスをインスタンス化してから閉じる必要があります。
に2つのウィンドウがありMainMenu.xib
ます。(ウィンドウを別のNIBに配置したいのですが、他の問題が発生するようです!)AppDelegateには、ウィンドウ(元のウィンドウ)とotherWindow(2番目のウィンドウが作成された)の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