Reputation: 3772
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...
Upvotes: 5
Views: 5290
Reputation: 156
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
Upvotes: 6
Reputation: 53
Did you try to remove all your custom code and go with the native navigation bar? Does the behavior stay the same? This way you can check if your custom bar messes with the transition.
Upvotes: 0
Reputation: 5935
Apple implemented official ways to create custom navigation bars in iOS 5. Unfortunately, they also broke most of the non-official ways of doing it in iOS 4. iOS 5 won't call drawRect for you anymore. You need to have two ways of doing it, one for iOS 5 and greater, using the new calls, and one for iOS 4 and earlier, using the old calls. Check out the documentation for custom navigation bars in iOS 5 for more info.
Upvotes: 0