我有一个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项目:
答案 0 :(得分:0)
请更改此行[self.navigationController pushViewController:detailViewController];
到
[self.navigationController pushViewController:detailViewController animated:YES];
并检查您的detailView的viewWillAppear
和viewWillDisappear
方法是否设置为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。)