2009-05-07 3 views
0

Je suis en train d'ouvrir une nouvelle fenêtre et je voudrais implémenter la méthode makeKeyAndOrderFront: pour la fenêtre, je me demandais quel code je devais entrer pour le faire.Comment implémentez-vous la méthode makeKeyAndOrderFront :?

Voici une partie du code que je l'ai déjà eu pour ouvrir la fenêtre:

Fichier 1 (le premier contrôleur)

#import "PreferenceController.h" 


@implementation PreferenceController 

- (id)init 
{ 
    if (![super initWithWindowNibName:@"Preferences"]) 
     return nil; 
    return self; 
} 
- (void)windowDidLoad 
{ 
    NSLog(@"Nib file is loaded"); 
} 

Fichier 2 (L'action Ouverture de la fenêtre)

#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]; 
} 

La raison pour laquelle j'essaye de faire ceci est qu'il a été suggéré par un ami de résoudre un problème d'ouverture de fenêtre.

Répondre

2

Quelque part après [preferenceController showWindow:self];:

[self.window makeKeyAndOrderFront:self]; 

ou avez-vous dire ajouter une méthode au contrôleur?

// you should use a different method name, cause it's not the 
// controller that is made key and ordered front. 
- (void)makeKeyAndOrderFront:(id)IBAction { 
    [self.window makeKeyAndOrderFront:self]; 
} 
+0

Voulez-vous dire après [self.window makeKeyAndOrderFront: self]; } ou avant le}? – Joshua

4

Vous ne voulez pas mettre en œuvre -makeKeyAndOrderFront:, vous voulez l'appeler sur votre fenêtre afin de l'amener à l'avant et en faire la fenêtre clé. Que fait votre showWindow: méthode?

+0

est montre la pointe nommée « Préférences ». – Joshua

0

message makeKeyAndOrderFront est envoyé seulement après le début de la boucle principale de l'événement [NSApp run]. Vous pouvez essayer d'envoyer le message de la vue principale en mettant en œuvre la méthode viewWillDraw:

- (void)viewWillDraw 
{ 
    [window makeKeyAndOrderFront: nil]; 
} 
Questions connexes