2008-12-12 5 views
0

Désolé - cela peut être une question facile, je suis nouveau sur le développement de l'iPhone et encore enveloppant ma tête autour de Views vs ViewControllers.UINavigationController Push Views

J'ai un NavigationViewController et je peux pousser vues à l'aide de la méthode suivante dans la RootViewController qui est relié à un bouton de la barre d'article:

- (IBAction)switch:(id)sender { 
     NSLog(@"Swith..."); 
     LibraryViewController *varLibraryViewController = [[LibraryViewController alloc] initWithNibName:@"LibraryViewController" bundle:nil]; 
     [[self navigationController] pushViewController:varLibraryViewController animated:YES]; 
    } 

Je veux appeler cette même méthode à partir d'un bouton sur la même vue qui est actuellement chargé. Fondamentalement, je veux avoir le bouton Barre en haut appelle la même méthode qu'un bouton sur la vue. Je me demandais comment appeler une méthode dans le ViewController à partir de la vue chargée depuis ce viewController. J'espère que cela a du sens. Ai-je besoin de créer une instance de RootViewController?

Je pense que cela serait déjà instancié. Je vous remercie.

Répondre

1

Votre RootViewController devrait avoir son propre fichier xib. Dans ce xib, le RootViewController est représenté par l'objet nommé "File's Owner". Vous pouvez lier les boutons de la vue au propriétaire du fichier de la même manière que vous pouvez lier des éléments à RootViewController dans MainMenu.xib.

+0

La réponse de Ben a également aidé mais votre réponse était plus directe à ce dont j'avais besoin. – Sean

1

Vous voulez déclarer votre méthode comme IBAction dans votre fichier d'en-tête:

 
- (IBAction) myMethod: (id) sender; 

Enregistrez votre tête, puis passer à Interface Builder. Cliquez avec le bouton droit sur le bouton Barre et faites glisser le pointeur selector vers votre objet Contrôleur de vue (probablement le propriétaire du fichier). Lorsque vous relâchez, vous devriez avoir un menu contextuel d'actions disponibles, et myMethod devrait être sélectionnable. Si vous n'obtenez pas cette fenêtre, vous devrez peut-être vous assurer que votre classe File Owner est correctement définie: sélectionnez le propriétaire du fichier dans la fenêtre du fichier, puis sélectionnez "Outils"> "Identity Inspector" dans le menu. Dans l'inspecteur, tapez la classe de votre contrôleur de vue dans le champ Classe.

+0

Je pense qu'il a dit que le bouton de la barre est déjà connecté –

4

BTW, le code que vous avez collé là-bas fuit votre LibraryViewController. Vous devez soit le relâcher explicitement après l'avoir poussé, soit le relancer automatiquement quand il est créé.