无法弹出 viewController

Can't pop viewController

我正在使用此代码显示 UIViewController:

CATransition *transition = [CATransition animation];
transition.duration = 0.f;
transition.type = kCATransitionFade;
[self.navigationController.view.layer addAnimation:transition forKey:nil];
[self.navigationController pushViewController:newVC animated:NO];

并且 viewController 显示正确。然后我使用这段代码准备动画(用于制作流行音乐的动画):

CATransition *transition = [CATransition animation];
transition.duration = 0.f;
transition.type = kCATransitionFade;
[self.navigationController.view.layer addAnimation:transition forKey:nil];

然而,这两行都不会弹出它:

[self.navigationController popViewControllerAnimated:NO];
[self.navigationController popToRootViewControllerAnimated:NO];

可能是什么问题? 记录导航堆栈显示正确的 UIViewControllers:

NSLog(@"%@", self.navigationController.viewControllers);

这就清楚了,

如果你不推送你的视图控制器,你就不能弹出你的视图控制器

如果您的代码中缺少以下行

 [self.navigationController pushViewController:newVC animated:NO];

none 两个波纹管将执行

[self.navigationController popViewControllerAnimated:NO];
[self.navigationController popToRootViewControllerAnimated:NO];

好吧,这很尴尬。

我是 运行 viewDidAppear:animated: 中的推送调用,如果我们已经推送了,我忘记执行检查。因此,当我弹出新的 UIViewController 时,viewDidAppear:animated 再次重新推送新的 VC。我还将它设置为 animate:NO 并删除了自定义转换,导致弹出和重新推送基本上瞬间发生。

我通过在弹出消息处放置一个断点发现了这一点,并注意到模拟器显示了根 UIViewController 几分之一秒。

之前将你的 navigationItems left / right / title 设置为 nil
[self.navigationController popViewControllerAnimated:NO];

我今天看到一些类似的东西,弹出后视图没有更新