2009-12-03 5 views
0

J'ai un problème avec la commutation de vues dans une application iPhone. J'ai le code source de "Beginning iPhone 3 Development" (http://books.google.com/books?id=TcP2bgESYfgC&printsec=frontcover&dq=beginning+iphone+3+development#v=onepage&q=beginning%20iphone%203%20development&f=false) - chapitre 6 - Applications Multiview.Changer de vue

Maintenant, j'ai le problème, je veux créer une nouvelle vue qui devrait changer en cliquant sur le bouton sur l'écran bleu "Appuyez sur moi". Mais cela n'a pas fonctionné.

-je ajouter ces lignes la au IBAction que le bouton sur l'écran bleu est pressé:

StartViewController *startController = [[StartViewController alloc] initWithNibName:@"StartViewController" bundle:nil]; 
self.startViewController = startController; 

[self.view insertSubview:startController.view atIndex:1]; 
[startController release]; 

Mais la barre d'outils en bas ne disparaîtra pas. Mais je veux que cette barre d'outils disparaisse.

Si j'écrit

[self.view insertSubview:startController.view atIndex:0]; 

au lieu de

[self.view insertSubview:startController.view atIndex:1]; 

la nouvelle se cache derrière l'xib ancien, donc je vois les deux points de vue, l'ancien et le nouveau. Pourquoi? Je ne comprends pas cela.

Merci beaucoup à l'avance & Cordialement Tim

Répondre

1

La barre d'outils est dans le SwitchView donc vous auriez besoin de le cacher de la vue si vous voulez cacher. Vous pouvez créer un IBOutlet pour la barre d'outils, puis appeler setHidden: (BOOL) pour le masquer. Vous devrez le faire à partir de BlueViewController, vous aurez donc besoin d'un moyen d'accéder à votre super vue (qui est SwitchView). Vous devrez également supprimer BlueView de la super vue en appelant removeFromSuperView sur blueViewController avant d'insérer la nouvelle vue en place. C'est fondamentalement le même code qui vient du commutateur dans SwitchViewController.

Mise à jour: J'ai regardé votre code. En BlueViewController.m utiliser pour blueButtonPressed: (id) sender

StartViewController *start = [[StartViewController alloc] initWithNibName:@"StartViewController" bundle:nil]; 
self.startViewController = start; 
[start release]; 
View_SwitcherAppDelegate *appDelegate = [UIApplication sharedApplication].delegate; 
SwitchViewController *switchController = appDelegate.switchViewController; 
switchController.theToolbar.hidden = YES; 
[self.view removeFromSuperview]; 
[self.view insertSubview:startViewController.view atIndex:0]; 

Vous aurez aussi besoin d'ajouter ces deux importations pour "View_SwitcherAppDelegate.h" et "SwitchViewController.h".

+0

J'intègre IBOutlet UIToolbar * theToolbar; et @property (nonatomic, retain) UIToolbar * theToolbar; à SwitchViewController.h et le synthétiser. J'ai fait la connexion à partir de "Switch View Controller" dans "MainWindow" à "theToolbar". Et avec ces lignes de code: \t \t StartViewController * start = [[StartViewController alloc] initWithNibName: @ "Ensemble StartViewController": nil]; \t self.startViewController = démarrer; \t [version de démarrage]; \t [self.view removeFromSuperview]; \t [self.view insertSubview: startViewController.view atIndex: 0]; \t [la barre d'outils setHidden: YES]; Je reçois l'erreur que "la barre d'outils n'est pas déclarée". – Tim

+0

Voici mon dernier code source du projet: ud05_188.ud05.udmedia.de/spotlight/Project.zip – Tim

+0

Cela ne fonctionne pas. L'écran suivant "StartVireController.xib" a une étiquette de texte dessus. Mais l'écran est blanc. – Tim

Questions connexes