1

Je souhaite afficher une vue une seule fois lorsqu'un contrôleur de vue principale est affiché pour la première fois.Comment éviter le scintillement lors de l'affichage d'un contrôleur de vue dans un autre contrôleur de vue

-(void) viewDidAppear:(BOOL)animated 
{ 
    if (!self.isMainViewShowedBefore) 
    { 
     self. self.isMainViewShowedBefore = YES; 

     UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController: temporaryViewController]; 

     [self presentViewController:navigationController animated:NO completion:NULL]; 
    } 
} 

Cela fonctionne mais l'écran principal apparaît pendant une courte période avant que le contrôleur de vue temporaire ne soit affiché.

J'ai essayé d'ajouter au-dessus du code dans viewWillAppear mais je m'y suis en dessous de l'erreur

« NSInternalInconsistencyException », la raison: « Toute tentative de commencer une transition modale de à alors qu'une transition est déjà en progrès. Attendez viewDidAppear/viewDidDisappear de connaître la actuelle transition a terminé »

Comment puis-je cacher le contrôleur principal avant que le contrôleur temporaire de vue est affiché?

Répondre

0

Vous avez eu l'erreur dans viewWillAppear parce que vous ne pouvez pas faire deux animations ensemble dans iOS, cela peut provoquer une panne de votre application mais la plupart du temps iOS est gentil avec nous, il nous donne seulement un avertissement.

Maintenant, ma principale préoccupation, pourquoi voudriez-vous ajouter ce contrôleur de vue principale si vous ne voulez pas l'utiliser du tout? et ceci ne scintille pas, c'est un comportement normal, si vous voulez que le UINavigationController apparaisse, il suffit de le semer à la place de ce "contrôleur de vue principale".

Si vous avez plus de logique cachée qui vous empêcherait de faire ce que j'ai dit, dites-moi s'il vous plaît.

+0

Ceci est une application photo et je veux recadrer la photo quand il chargé première fois. – zontragon

+0

et le contrôleur de vue de recadrage est un contrôleur tiers et je ne veux pas le changer – zontragon

1

Ajouter temporaryViewController.view comme sous-vue self.view (votre contrôleur principal de vue)

[self.view addSubview:temporaryViewController.view]; 
Questions connexes