Problème de chargement d'une vue
Bonjour à tous, voici le topo.
Je me suis inspiré de ce livre pour réaliser un switch entre différentes vues, mais j'obtiens un résultat bizarre...
Pour faire simple, l'architecture est la suivante:
RootViewController
|_ myViewController (x2)
|_ UIView (dans le fichier myView_iPhone.xib et myView_iPad.xib)
|_ UIButton + UILabel
Le but est quand je clic sur le bouton de ma vue 1, j'affiche la vue 2, et inversement. Voici comment j'ai codé tout cela:
RootViewController.m
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
-(void)viewDidLoad{
[self.view setBackgroundColor:[UIColor redColor]];
NSString * nibName;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
nibName=@"myView_iPad";
else
nibName=@"myView_iPhone";
vc1 =[[myViewController alloc]initWithNibName:nibName bundle:nil];
vc2 =[[myViewController alloc]initWithNibName:nibName bundle:nil];
[vc1.view setBackgroundColor:[UIColor grayColor]];
[vc2.view setBackgroundColor:[UIColor greenColor]];
[self.view insertSubview:vc1.view atIndex:0];
[super viewDidLoad];
}
-(void) switchView{
if(vc1.view.superview != nil){
[vc1.view removeFromSuperview];
[self.view insertSubview:vc2.view atIndex:0];
}else{
[vc2.view removeFromSuperview];
[self.view insertSubview:vc1.view atIndex:0];
}
} |
myViewController.m
Code:
1 2 3 4 5
|
-(IBAction)onTouchSwitch:(id)sender{
AppDelegate_Shared * appD=(AppDelegate_Shared*)[[UIApplication sharedApplication] delegate];
[appD.rootViewController switchView];
} |
et voici le résultat:
http://img853.imageshack.us/img853/5866/img0009y.png
http://img684.imageshack.us/img684/971/img0010ez.png
Je ne saisis pas pourquoi la vue de vc1 se charge à moitié. Autre chose de bizarre, au niveau du bouton sur vc1, si je clique sur la gauche du bouton (vers la partie grise) ça fonctionne. Si je clique sur la droite (partie rouge) il ne fonctionne pas...
J'ai aussi essayé de modifier la méthode switchView, pour qu'à chaque switch j'instancie une nouvelle vue à partir du xib. Au lancement, même problème, par contre quand je switch 2 fois et reviens sur la première vue, elle est affichée correctement et fonctionnelle.
J'ai inversé l'ordre d'instanciation, en instanciant vc2 avant vc1, le résultat est le même, vc1 est toujours défectueux. Le problème vient donc (selon moi) du premier [self.view insertSubview:vc1.view atIndex:0]; dans le viewDidLoad...
Avez-vous une idée?
merci d'avance pour votre aide !