【发布时间】:2014-10-16 09:19:06
【问题描述】:
我的应用程序中存在导航控制器pushViewController:animated:YES 由用户触发的情况。用户还可以通过点击另一个控件来触发popViewController:animated:YES。意图是 popViewController 是 pushViewController 的撤消或反转。
但是,如果用户触发popViewController:animated:YES 而 pushViewController 动画仍在发生,我会收到一条消息记录到控制台:
2014-08-22 08:26:36.601 MyApp[22380:60b] nested pop animation can result in corrupted navigation bar
2014-08-22 08:26:36.960 MyApp[22380:60b] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
确实,导航栏确实损坏了:后退按钮不再可见。我必须去做其他事情,然后回到我的应用程序中受影响的页面,让它再次正常工作。
我能做些什么来避免这种竞争状况?我的第一个想法是保护popViewController 调用,检查当前导航动画是否已经发生,并等待它完成(甚至完全取消popViewController 调用)。但是,我还没有找到一种方法来检测已经发生的动作。
【问题讨论】:
-
你在使用故事板吗?
-
@MohitPopat 不,这完全是程序化的。
标签: ios animation ios7 uinavigationcontroller