Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

popViewController / viewWillAppear not animated in iOS 5

I wasn't lucky with searching for this, so here we go ;)

I have a UIViewController with a custom UINavigationBar which pushes another UIViewController as subview.

Everything works fine except when I click the back button on the subview. The previews (first) view appears correctly, but not animated. The animation of the UINavigationBar is correct, only the views switch immediately.

The function - (void)viewWillAppear:(BOOL)animated of the first UIViewController gets called with NO for animated. This only happens when I test with iOS 5, not with iOS 4.

Does anyone know how to fix this?

Thanks for your help! Hannes

UPDATE 1

I just removed all custom code and just used the plain UINavigationBar (so no extra settings) and it still doesn't work with iOS 5. This is my code I use in the first ViewController to push the second ViewController:

[self.navigationController pushViewController:secondViewController animated:YES];

As I already mentioned - when I click the back button in the navigation bar on the second view the first view appears immediately without animation.

Any help would be appreciated! Thanks!

UPDATE 2

I feel like I'm getting closer to the issue, but still no solution:

I just added a custom UINavigationController where I just call [super popViewControllerAnimated:animated]. This get's called correctly (animated is YES) but the viewWillAppear of the first UIViewController gets NO as value for animated...

like image 204
Hannes Avatar asked Jan 17 '12 17:01

Hannes


1 Answers

I was having a similar problem today where the UIViewController was getting NO in viewWillAppear, except with the standard UINavigationBar and UINavigationController.

It turned out to be due to manually calling viewWillAppear:YES somewhere it shouldn't have been. This item suggests that it can also be caused by calling the wrong super method somewhere (e.g. [super viewWillAppear:animated] instead of [super viewDidAppear:animated] inside of viewDidAppear).

As for using a custom UINavigationBar, I ran across this link today that may help your case: http://sloshire1.posterous.com/simple-fix-for-viewwillappear-in-ios5

like image 119
dwyw Avatar answered Nov 03 '22 07:11

dwyw