我正在从书中的教程创建一个应用程序,但我注意到一个问题,当我创建的首选项窗口打开然后关闭它将无法再次打开时,我该如何解决这个问题?
谢谢.
编辑:我看到另一篇关于此的帖子,但仍然没有回答,所以我想知道你是否可以为我回答这个问题.
编辑:我说的面板(使用偏好窗格),它正在通过菜单项打开,并在窗口的角落交叉封闭.我用来创建它的代码来自Book,Cocoa Programming For Mac OS X,用作首选项窗格的Panel位于单独的nib文件中.
编辑:这是代码,它很复杂,因为教程让你创建4个文件.
1)Preferences_Delegate.h
#import@class PreferenceController; @interface Prefernces_Delegate : NSObject { PreferenceController *preferenceController; } - (IBAction)showPreferencePanel:(id)sender; @end
2)Preferences_Delegate.m
#import "Prefernces_Delegate.h" #import "PreferenceController.h" @implementation Prefernces_Delegate - (IBAction)showPreferencePanel:(id)sender { // Is preferenceController nil? if (!preferenceController) { preferenceController = [[PreferenceController alloc] init]; } NSLog(@"showing %@", preferenceController); [preferenceController showWindow:self]; } @end
3)PreferencesController.h(不重要)
#import@interface PreferenceController : NSWindowController { IBOutlet NSButton *checkbox; } - (IBAction)changeNewEmptyDoc:(id)sender; @end
4)PreferencesController.m
#import "PreferenceController.h" @implementation PreferenceController - (id)init { if (![super initWithWindowNibName:@"Preferences"]) return nil; return self; } - (void)windowDidLoad { NSLog(@"Nib file is loaded"); } - (IBAction)changeNewEmptyDoc: (id)sender { int state = [checkbox state]; NSLog(@"Checkbox changed %d", state); } @end
Marc Charbon.. 5
在Interface Builder中,确保在Window的属性中关闭Release on close.还要仔细检查窗口控制器与窗口之间的连接是否正常连接.
在Interface Builder中,确保在Window的属性中关闭Release on close.还要仔细检查窗口控制器与窗口之间的连接是否正常连接.