Donc j'essaie de faire cet exercice où j'ai besoin de définir un délégué pour la fenêtre principale. Le but est de s'assurer que lorsque l'utilisateur redimensionne la fenêtre, il est toujours deux fois plus large que haut.Objectif C Délégué pour la fenêtre principale de l'application
Ceci est mon fichier AppController.h:
#import <Cocoa/Cocoa.h>
@interface AppController : NSObject
{
NSWindow *windowWillResize;
}
@end
et ceci est mon fichier AppController.m:
#import "AppController.h"
@implementation AppController
- (id) init
{
[super init];
windowWillResize = [[NSWindow alloc] init];
[windowWillResize setDelegate:self];
return self;
}
- (NSSize) windowWillResize:(NSWindow *)sender
toSize:(NSSize)frameSize;
{
NSLog(@"size is changing");
return frameSize;
}
@end
Cependant, je peux supprimer la ligne [windowWillResize setDelegate: auto]; depuis que j'ai défini le délégué dans Interface Builder, mais je ne sais pas pourquoi cela fonctionne.
Comment windowWillResize sait-il que je fais référence à la fenêtre principale de l'application puisque je suis en train de créer un tout nouveau windowWillResize = [[NSWindow alloc] init]; Je sens que je me trompe complètement. Quelqu'un peut-il m'indiquer la bonne direction? Merci!
Merci Graham et mouviciel. Je pensais que ma création de NSWindow était incorrecte. La chose que je ne savais pas, c'est que windowWillResize est une fonction intégrée. Alors, voici ma question suivante, si je n'utilisais pas l'interface builder, y a-t-il dans mon code de spécifier que je veux que appController soit le délégué de MainWindow? – hahuang65
Oh, attends, maintenant je suis confus ... comment windowWillResize sait-il contrôler la fenêtre principale? Je l'ai déclaré dans le fichier d'en-tête, mais je ne le connecte nulle part à la fenêtre principale. Je ne mets que appController en tant que délégué ... Comment la fonction windowWillResize se lie-t-elle au redimensionnement actuel? – hahuang65
La définition de appController en tant que délégué dans Interface Builder permet de connecter -windowWillResize à la fenêtre principale. Chaque fois qu'un utilisateur demande un redimensionnement de la fenêtre principale, l'instance de la fenêtre envoie un message [delegate windowWillResize: ...] où delegate = appController. – mouviciel