IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Objective-C Discussion :

Problème de chargement d'une vue


Sujet :

Objective-C

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Points : 37
    Points
    37
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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:



    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 !

  2. #2
    Membre du Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Points : 66
    Points
    66
    Par défaut
    Bonjour,

    Essaye d'ajouter ça après la création des view controllers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    vc1.view.frame.origin.x=0;
    vc1.view.frame.origin.y=0;
     
    vc2.view.frame.origin.x=0;
    vc2.view.frame.origin.y=0;
    Cordialement

Discussions similaires

  1. [Win32]Problème au chargement d'une DLL C++
    Par FamiDoo dans le forum MFC
    Réponses: 22
    Dernier message: 05/07/2006, 11h10
  2. Réponses: 3
    Dernier message: 19/05/2006, 15h54
  3. [VB] Problème de chargement d'une DLL
    Par Elijha dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/05/2006, 09h24
  4. Problème de chargement d'une servlet
    Par jh0483 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 12/04/2006, 12h52
  5. problème de chargement d'une Applet
    Par cladsam dans le forum Applets
    Réponses: 1
    Dernier message: 31/01/2006, 23h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo