NSViewController & menus
frOM
Membre
Je fais une application "test" pour apprendre à charger et décharger des vues et aussi maà®triser les actions de menus.
Je me suis inspiré du code du livre d'Hillegass pour le chargement des vues. Mon problème est avec les menus.
Comme je l'ai mis en commentaire dans le code, si je charge la première vue (index : 0), j'ai accès au menu et le code mis dans une sous-classe de mon ManagingController fonctionne. Si je change de vue, le menu reste grisé, et si je reviens à la première vu, le menu est toujours grisé... Et ça ne marche d'aucune manière si je charge en premier la vue à l'index 1 !!
J'ai dû louper une étape. Pourtant, les contrôleurs sont bien mis dans la chaà®ne des répondeurs.
J'ai fait toutes sortes de test, vérifié mes bindings... rien n'y fait.
Je me suis inspiré du code du livre d'Hillegass pour le chargement des vues. Mon problème est avec les menus.
<br />- (void)windowControllerDidLoadNib:(NSWindowController *)windowController <br />{<br /> [super windowControllerDidLoadNib:windowController];<br /> <br /> // Demande 1 : première vue affichée, menu activé et action exécutée<br /> [self displayViewController:[viewControllers objectAtIndex:0]];<br /> <br /> // Si demande 2 : seconde vue affichée, menu non activé !!<br /> //[self displayViewController:[viewControllers objectAtIndex:1]];<br />}<br /><br />- (id)init <br />{<br /> self = [super init];<br /> if (self != nil) {<br /> <br /> viewControllers = [[NSMutableArray alloc]init];<br /> ManagingViewController *vc;<br /> <br /> vc = [[FirstViewController alloc]init];<br /> [viewControllers addObject:vc];<br /> [vc release];<br /> <br /> vc = [[SecondViewController alloc]init];<br /> [viewControllers addObject:vc];<br /> [vc release];<br /> <br /> }<br /> <br /> return self;<br />}<br /><br />-(IBAction)changeViewController:(id)sender {<br /> <br /> // par barre de menu<br /> [self displayViewController:[viewControllers objectAtIndex:[sender tag]]];<br />}<br /><br />-(void)displayViewController: (ManagingViewController *)vc {<br /> <br /> NSView *v = [vc view];<br /> [mainWindow setContentView:nil];<br /> [mainWindow setContentView:v];<br /><br /> [v setNextResponder:vc];<br /> [vc setNextResponder:mainWindow];<br /><br />}<br />
Comme je l'ai mis en commentaire dans le code, si je charge la première vue (index : 0), j'ai accès au menu et le code mis dans une sous-classe de mon ManagingController fonctionne. Si je change de vue, le menu reste grisé, et si je reviens à la première vu, le menu est toujours grisé... Et ça ne marche d'aucune manière si je charge en premier la vue à l'index 1 !!
J'ai dû louper une étape. Pourtant, les contrôleurs sont bien mis dans la chaà®ne des répondeurs.
<br />[v setNextResponder:vc];<br />[vc setNextResponder:mainWindow];<br />
J'ai fait toutes sortes de test, vérifié mes bindings... rien n'y fait.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Sur ma deuxième vue, il n'y avait pas d'objet qui puisse prendre le focus ! En rajoutant un textfield...