【发布时间】:2023-04-09 11:56:01
【问题描述】:
我目前正在处理以下情况,我需要在短时间内依次推送两个viewController(A和B)。
这就是我所做的。
- 第一个电话,
[UINavigationController pushViewController:vcA animated:yes] - 在
[navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated],我打电话给[UINavigationController pushViewController:vcB animated:yes]
由于我已经覆盖了[UINavigationController pushViewController:animated] 中的一些功能,我希望[UINavigationController pushViewController:animated] 只触发两次,一次在推送vcA 时触发,一次在推送vcB 时触发。
但是目前的情况是[UINavigationController pushViewController:animated]会被触发3次:
- 我们第一次拨打
[UINavigationController pushViewController:vcA animated:yes] - 我们第二次致电
[UINavigationController pushViewController:vcB animated:yes]。然而,这很奇怪,因为在这一点上,这并没有做任何事情。我检查了NavigationController.viewControllers,发现vcB没有被推送 - 第三次,再次触发
[UINavigationController pushViewController:vcB animated:yes],又被[_UIViewControllerTransitionCoordinator _applyBlocks:releaseBlocks:]触发,完整的stacktrace可见here
所以我的问题是,第三个[UINavigationController pushViewController:vcB animated:yes] 是从哪里来的?我确定我没有覆盖任何_UIViewControllerTransitionCoordinator。
【问题讨论】:
标签: ios uiviewcontroller uinavigationcontroller uikit pushviewcontroller