I have a UITableViewController that pushes a UIViewController using a UINavigationController:
[self.navigationController pushViewController:detailViewController animated:YES];
In the detailViewController, I present a modal view when the user taps a button (a MFMessageComposeViewController for sending an SMS message) and then dismiss it, like this:
[self presentModalViewController:smsViewController animated:YES];
...
// user pushes Send or Cancel button on the view
...
[self dismissModalViewControllerAnimated:YES];
The SMS modal view dismisses properly, but now when I click the “Back” button on the UINavigationBar, the views don’t animate back to the table view. The detail view just disappears and the UITableViewController’s view is there. The Back button animates and fades and the selected table cell still has the fading blue effect, but there’s no view animation.
Does anyone know why the views don’t animate properly? If I don’t open the SMS modal view, then the animation works properly, so I’m pretty sure it’s caused somehow by the modal behavior.
Here’s how my Interface Builder view arrangement looks for this Tab Bar Item:

I discovered my problem. I am using a custom UITabBarController subclass that overrides
-(void)viewWillAppear:(BOOL)animatedwith some custom tab bar handling. However, I wasn’t calling[super viewWillAppear:animated]in the overridden method. Yes, a sad day in my developer life. It still seems odd to me that this would cause the behavior I experienced, but I’m certain it’s now fixed due to this change.Interestingly, the modal push/dismiss animation works properly without the
[super viewWillAppear:animated]call in the iPhone 4.3 simulator. But, it does not work in the iPhone 5.0 or 5.1 simulators. (I used a non-MFMessageComposeViewController to text the modal behavior on the iPhone simulator since SMS isn’t supported on the simulator).