1

我有一个 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 视图排列如何查找此选项卡栏项:

查看安排

4

2 回答 2

0

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

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

并检查您的 detailViewviewWillAppearviewWillDisappear方法是否设置为YES.

于 2012-07-18T17:50:14.510 回答
0

我发现了我的问题。我正在使用一个自定义的 UITabBarController 子类,它-(void)viewWillAppear:(BOOL)animated使用一些自定义选项卡栏处理来覆盖。但是,我没有调用[super viewWillAppear:animated]被覆盖的方法。是的,这是我开发人员生活中悲伤的一天。对我来说,这会导致我所经历的行为仍然很奇怪,但我确信它现在由于这种变化而得到修复。

有趣的是,模式推送/关闭动画在没有[super viewWillAppear:animated]iPhone 4.3 模拟器中的调用的情况下可以正常工作。但是,它不适用于 iPhone 5.0 或 5.1 模拟器。(我使用非 MFMessageComposeViewController 在 iPhone 模拟器上发送模式行为的文本,因为模拟器不支持 SMS)。

于 2012-07-26T17:24:39.803 回答