2009-05-07 7 views
2

Je crée une application à partir d'un tutoriel dans un livre, mais j'ai remarqué un problème, lorsque la fenêtre de préférences que j'ai créée est ouverte puis fermée, elle ne s'ouvre plus, comment puis-je résoudre ce problème?Pourquoi la fenêtre de l'application ne s'ouvre qu'une seule fois et ne s'ouvre pas à nouveau?

Merci.

EDIT: J'ai vu un autre article à ce sujet mais je n'ai toujours pas répondu, alors je me demandais si vous pouviez répondre à cette question pour moi.

EDIT: Je parle d'un panneau (utilisé un panneau de préférences), il est ouvert via un élément de menu, et est fermé avec la croix dans le coin de la fenêtre. Le code que j'ai utilisé pour le créer provenait du livre, Cocoa Programming pour Mac OS X, le panneau qui est utilisé comme panneau de préférence se trouve dans un fichier nib séparé.

EDIT: Voici le code, c'est compliqué car le tutoriel vous a fait créer 4 fichiers.

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 (pas important)

#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 
+0

Vous voudrez peut-être ajouter un peu de contexte à cette question. Quand ouvre-t-il? Comment le fermez-vous? Quelle méthode appelez-vous pour essayer de l'ouvrir? – rjstelling

+0

Certains codes peuvent aussi aider :) –

+0

Êtes-vous délibérément vague? "application vraiment basique"? "la fenêtre est ouverte puis fermée, elle ne s'ouvrira plus"? "vu un autre post à ce sujet"? Il y a tellement de scénarios possibles auxquels vous pourriez vous référer, c'est ridicule. – Evan

Répondre

5

Dans Interface Builder, assurez-vous de presse sur près est désactivé dans les attributs de la fenêtre. Vérifiez également que les connexions vers et à partir de la fenêtre de votre contrôleur de fenêtre sont bien branchés.

+0

Comment connecter les fenêtres? Parce qu'il n'a rien dit à ce sujet dans le Tutoriel. – Pete

+0

Merci, vous aviez raison, j'ai raté une étape dans le tutoriel vous disant de connecter la fenêtre. – Pete

1

Assurez-vous que la variable de fenêtre dans le windowController est connectée au panneau.

Questions connexes