Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"Unbalanced calls to begin/end appearance transitions" warning when push a view in a modal way in XCode 4 with Storyboard

After some research on the web without success, I come here to ask you the question about my warning.

Actually, I have a view V1 with a navigation controller and I want to push a modal view V2 when V1 has finished loading. So I use the performSegueWithIdentifier method (I'm using storyboard). Here is my code:

[self performSegueWithIdentifier:@"showConnexionViewSegue" sender:self];

And when I compile, I got this warning:

Unbalanced calls to begin/end appearance transitions for <UINavigationController: 0x6849b30>

Can anyone help me?

like image 760
Vinestro Avatar asked Nov 22 '11 09:11

Vinestro


4 Answers

It sounds like you may be performing the segue in -viewWillAppear: thus generating two -viewWillAppear: messages without 2 corresponding -viewDidAppear messages.

Try performing the segue in -viewDidAppear.

like image 123
Mark Adams Avatar answered Nov 12 '22 01:11

Mark Adams


I had this problem, but what I had done is on a UIViewController I had linked a Segue from a UIButton and also coded it into a nextBtnPressed: function, so I was actually pushing two new UIViewControllers on the one button press. Limiting it to just the one segue fixed it. But it took some investigating to see that I had done this double up.

like image 5
DonnaLea Avatar answered Nov 12 '22 00:11

DonnaLea


'Unbalanced calls to begin/end appearance transitions for '

Says an animation is started before the last related animation isnt done. So, are you popping any view controller before pushing the new one ? Or may be popping to root ? if yes try doing so without animation i.e. [self.navigationController popToRootViewControllerAnimated:NO];

And see if this resolves the issue, In my case this did the trick.

like image 5
infiniteLoop Avatar answered Nov 12 '22 00:11

infiniteLoop


The reasons for this are manifold and are very specific to the context and the programming. For example, what I was doing was

  1. initialising a sound file, playing it (asynchronously) for 1.4 seconds,
  2. making an image move across the screen using animation timed to last 1.4 seconds and,
  3. with a timer set to 1.4 seconds after step 2, pushing a viewcontroller.

What i discovered is that if I DO NOT have the instructions for these 3 steps one after the other (if I mix them up), then I get the error "Unbalanced calls...". Also, if I time the push of the viewcontroller to less than 1.4 seconds, I get the message as well.

So, check that the sequence and timing of your program instructions are correct.

like image 1
Anjaan Avatar answered Nov 12 '22 00:11

Anjaan