121 votes

Déséquilibrée appels de début/fin de l'apparence de transitions pour <UITabBarController: 0x197870="">

J'ai lu sur un autre utilisateur rencontre semblable erreur, mais cette erreur est dans les différents cas.

J'ai reçu ce message quand j'ai ajouté une-Vue-Contrôleur d'abord:

Unbalanced calls to begin/end appearance transitions for 
<UITabBarController: 0x197870>

La structure de l'application est le suivant:

J'ai eu un 5-onglet TabBarController lié à 5 Contrôleurs de Vue. Dans la première montrant onglet, je l'appelle un nouveau point de Vue Contrôleur de superposition comme une introduction à l'application.

J'utilise ce code pour appeler l'introduction-vue-contrôleur:

IntroVC *vc = [[IntroVC alloc] init];
[self presentModalViewController:vc animated:YES];
[vc release]; 

Après cette IntroVC - vue-contrôleur, l'erreur ci-dessus montre.

p.s. J'utilise xCode 4.2 et iOS 5.0 SDK, le développement iOS 4.3 application.

98voto

Jesper Points 3116

Sans voir plus de environs de code je ne peux pas donner une réponse définitive, mais j'ai deux théories.

  1. Vous n'êtes pas à l'aide de UIViewController's désigné initialiseur initWithNibName:bundle:. Essayez de l'utiliser au lieu de simplement en init.

  2. Aussi, self peut-être l'une de la barre d'onglets du contrôleur de la vue des contrôleurs. Toujours présent afficher les contrôleurs de la supérieure-vue-contrôleur, ce qui signifie dans ce cas, posez la barre d'onglet contrôleur de présenter la superposition de-vue-contrôleur au nom de-vue-contrôleur. Vous pouvez toujours garder tout de rappel des délégués à la vue réelle du contrôleur, mais vous devez avoir la barre d'onglet contrôleur de présenter et de faire disparaître.

40voto

PokerIncome.com Points 791

J'ai corrigé cette erreur en changeant d'animation de OUI à NON.

De:

[tabBarController presentModalViewController:viewController animated:YES];

Pour:

[tabBarController presentModalViewController:viewController animated:NO];

16voto

Peter Lapisu Points 3274

Posté par danh

Vous pouvez générer cet avertissement en présentant le modal vc avant l'application se fait en cours d'initialisation. c'est à dire Début des onglets de l'application application de modèle et de présenter un modal vc sur le dessus de soi.tabBarController comme la dernière ligne de l'application:didFinishLaunching. Avertissement apparaît. Solution: laissez la pile se détendre tout d'abord, présenter le modal vc dans une autre méthode, appelée avec un performSelector withDelay:0.0

Essayez de déplacer la méthode dans le viewWillAppear et de la garde de sorte qu'il n'est exécutée qu'une fois (serait de recommander la création d'une propriété)

4voto

亚历山大 Points 2069

J'ai eu le même problème. J'ai appelé une méthode à l'intérieur d' viewDidAppear à l'intérieur de mon premier UIViewController

- (void)viewDidAppear{
    [self performSelector:@selector(loadingView)
               withObject:nil afterDelay:0.5];
}

- (void)loadingView{

    [self performSegueWithIdentifier:@"loadedData" sender:self];
}

3voto

Tolusha Points 29

J'ai eu le même problème quand j'ai besoin de Présenter Mon Login-Vue-Contrôleur à partir d'un autre point de Vue Contrôleur, Si l'Utilisateur n'est pas autorisé, je l'ai fait dans la Méthode ViewDidLoad de mon Autre-Vue-Contrôleur ( si pas autorisé -> presentModalViewController ). Quand je commence à faire dans ViewDidAppear méthode, j'ai résolu ce problème. Je Pense que ViewDidLoad seulement initialiser des propriétés et après que le réel montrant vue algorithme commence! C'est pourquoi vous devez utiliser viewDidAppear méthode modale des transitions!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X