Почему окно приложения открывается только один раз, а затем не открывается снова? - PullRequest
2 голосов
/ 07 мая 2009

Я создаю приложение из учебника в книге, но я заметил проблему: когда окно настроек, которое я создал, открывается и закрывается, оно не открывается снова, как я могу это исправить?

Спасибо.

РЕДАКТИРОВАТЬ: Я видел еще один пост об этом, но до сих пор не получил ответа, поэтому мне было интересно, если вы могли бы ответить на этот вопрос для меня.

РЕДАКТИРОВАТЬ: я имею в виду панель (используется панель настроек), она открывается через пункт меню и закрывается крестиком в углу окна. Код, который я использовал для его создания, взят из книги «Программирование какао для Mac OS X». Панель, которая используется в качестве панели настроек, находится в отдельном файле пера.

РЕДАКТИРОВАТЬ: Вот код, это сложно, так как учебник заставил вас создать 4 файла.

1) Preferences_Delegate.h

#import <Cocoa/Cocoa.h>
@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 <Cocoa/Cocoa.h>
@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

Ответы [ 2 ]

5 голосов
/ 07 мая 2009

В Интерфейсном Разработчике убедитесь, что Релиз при закрытии отключен в атрибутах окна. Также дважды проверьте, что соединения к окну и из окна вашего оконного контроллера в порядке.

1 голос
/ 07 мая 2009

Убедитесь, что переменная окна в windowController подключена к панели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...