Cocoa インターフェイスでフォームを切り替えるのに非常に苦労しています。最初のフォームとそのデリゲートから、最初のウィンドウを非表示にしてから、すべてのプロパティを含む 2 番目のウィンドウを読み込んで表示できます。これは機能しています...悲しいかな、最初のウィンドウに戻ろうとすると、2番目のウィンドウが非表示になり、最初のウィンドウが返されません...
ここに、初期フォームと formTwo の .h と .m があります...
.h
#import <Cocoa/Cocoa.h>
@class frmTwoDelegate;
@interface AppDelegate : NSObject {
@private
frmTwoDelegate *_frmTwo;
}
@property (assign) IBOutlet NSWindow *window;
- (IBAction)BtnSwitchAction:(id)sender;
@end
.m
#import "AppDelegate.h"
#import "frmTwoDelegate.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
...
}
- (IBAction)BtnSwitchAction:(id)sender {
if (!_frmTwo) {
_frmTwo = [[DecriptDelegate alloc] initWithWindowNibName:@"frmTwo"];
[_frmTwo setFrmStart:self];
}
[_frmTwo showWindow:sender];
[_window setIsVisible:NO];
}
@end
frmTwo の .h と .m は次のとおりです。
.h
#import <Cocoa/Cocoa.h>
@class AppDelegate;
@interface frmTwo : NSWindowController{
@private
AppDelegate *frmStart;
__unsafe_unretained NSTextView *_TxtView;
}
@property (retain) AppDelegate *frmStart;
@property (assign) IBOutlet NSWindow *frmTwo;
@property (unsafe_unretained) IBOutlet NSTextView *TxtView;
- (IBAction)BtnOpenActionPreformed:(id)sender;
- (IBAction)BtnBackActionPreformed:(id)sender;
@end
.m
#import "frmTwo.h"
#import "AppDelegate.h"
@implementation frmTwo
@synthesize frmStart;
- (id)initWithWindow:(NSWindow *)window
{
...
}
- (void)windowDidLoad
{
...
}
- (IBAction)BtnOpenActionPreformed:(id)sender
{
...
}
- (IBAction)BtnBackActionPreformed:(id)sender {
[frmStart ShowWindow];
[_frmTwo setIsVisible:NO];
}
@end