2

答:ChildViewController:

[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];

B:父视图控制器:

[self dismissViewControllerAnimated:YES completion:nil];

A和B有什么区别?

4

1 回答 1

-2

dismissModalViewControllerAnimated:是一个已弃用的 API,在转向更多基于块的 API 之前由 Apple 公开。与 Vizlix 不同,我会说dismissModalViewControllerAnimated:永远不应该使用它。Apple 不再维护它,或者至少没有适当地维护它,因为使用它有一些特殊的副作用,使用presentViewController:animated:completion:dismissViewControllerAnimated:completion:. 旧 API 只能用于仅针对旧 iOS 版本的特定代码路径。我所说的副作用至少来自 iOS6。

最重要的是,基于块的 API 提供了旧式 API 无法提供的功能(例如,push;pop API 完全缺少的功能)。想象一下需要创建一个视图控制器事件链。在不知道动画何时完成的情况下,由于在另一个动画正在进行时执行动画,您很有可能遇到错误。使用基于块的 API,您可以轻松链接此类事件。

于 2013-10-15T10:48:25.907 回答