present / dismissModalViewController导致UINavigationBar“Back”丢失动画

时间:2012-07-18 17:08:07

标签: iphone ios animation modal-dialog presentmodalviewcontroller

我有一个UITableViewController,使用UINavigationController推送UIViewController:

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

在detailViewController中,当用户点击一个按钮(用于发送SMS消息的MFMessageComposeViewController)然后将其解除时,我会提供一个模态视图,如下所示:

[self presentModalViewController:smsViewController animated:YES];
...
// user pushes Send or Cancel button on the view
...
[self dismissModalViewControllerAnimated:YES];

SMS模式视图正确解散,但现在当我单击UINavigationBar上的“后退”按钮时,视图不会动画回到表视图。细节视图刚刚消失,UITableViewController的视图就在那里。 “后退”按钮具有动画和淡入淡出效果,选定的表格单元格仍具有淡化蓝色效果,但没有视图动画。

有谁知道为什么视图没有正确动画?如果我不打开SMS模态视图,那么动画就可以正常工作,所以我很确定它是由模态行为引起的。

以下是我的Interface Builder视图排列如何查找此Tab Bar项目:

View Arrangement

2 个答案:

答案 0 :(得分:0)

请更改此行[self.navigationController pushViewController:detailViewController];

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

并检查您的detailView的viewWillAppearviewWillDisappear方法是否设置为YES

答案 1 :(得分:0)

我发现了我的问题。我使用自定义UITabBarController子类,用一些自定义标签栏处理覆盖-(void)viewWillAppear:(BOOL)animated。但是,我没有在重写方法中调用[super viewWillAppear:animated]。是的,在我的开发者生活中度过了悲伤的一天对我来说这似乎很奇怪,这会导致我所经历的行为,但我确信它现在因为这种变化而得到修复。

有趣的是,模态推/解动画在iPhone 4.3模拟器中没有[super viewWillAppear:animated]调用的情况下正常工作。但是,它在iPhone 5.0或5.1模拟器中不起作用。 (我使用了一个非MFMessageComposeViewController来模拟iPhone模拟器上的模态行为,因为模拟器上不支持SMS。)