@
vixvix 我以为第一句话就说得够清楚了。
The presenting view controller is responsible for dismissing the view controller it presented.
一次能成功的代码不代表一直能成功,我告诉你一种可能会出问题的情况。
如果BViewController在进行一些很耗时的操作,它设了一个回调,执行下面这行代码:
[self dismissViewControllerAnimated:YES completion:nil]; // 耗时操作完成后打算dismiss自己
期间因为业务需要,BViewController 上面又弹出了一个 CViewController,之后 BViewController 的回调触发了,结果CViewController 被dismiss了,BViewController却还在。因为这时系统发现 BViewController 的 presentedViewController属性不为nil,就不把你的 dismissViewController 自动forward到AViewController了。
如果你觉得上面的话太抽象,我更新了我的Demo来演示这种情况。
https://github.com/PrideChung/Demos/tree/master/PresentingViewController