使用dismissViewController有什么区别?

时间:2013-07-25 03:31:31

标签: cocoa-touch uiviewcontroller

A:ChildViewController:

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

B:ParentViewController:

[self dismissViewControllerAnimated:YES completion:nil];

A和B有什么区别?

1 个答案:

答案 0 :(得分:-2)

dismissModalViewControllerAnimated:是一个弃用的API,Apple在转向更多基于块的API之前就已经公开了。与Vizlix不同,我会说永远不应该使用dismissModalViewControllerAnimated:。它不再在Apple上维护,或者至少不正确,因为使用它会产生一些特殊的副作用,在使用presentViewController:animated:completion:dismissViewControllerAnimated:completion:时会消失。旧API应仅用于仅针对较旧iOS版本的特定代码路径。我所说的副作用至少来自iOS6。

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