我注意到iOS 5引入了额外的参数和方法来检测视图控制器的演示动画何时完成。presentModalViewController检测动画完成
有没有办法在较早的版本,如iOS 4.x做到这一点?
我已经使用presentModalViewController
来呈现控制器,我注意到你不能调用dismiss方法,除非动画已经完成。
那么我该如何检测动画何时完成,然后才能解除它?
我注意到iOS 5引入了额外的参数和方法来检测视图控制器的演示动画何时完成。presentModalViewController检测动画完成
有没有办法在较早的版本,如iOS 4.x做到这一点?
我已经使用presentModalViewController
来呈现控制器,我注意到你不能调用dismiss方法,除非动画已经完成。
那么我该如何检测动画何时完成,然后才能解除它?
我只是试图解雇一个模态提出的VC,在viewDidLoad,viewWillAppear和viewDidAppear。前两名没有骰子,但解雇工作在视图中出现。 (在动画完成后会调用这种方法是有道理的)。
而且,您可能已经知道这一点,但如果您不这样做:您不必从提交它的VC中解除模态提供的VC。您的“等待网络”VC可以检查viewDidAppear中的连接状态,并在连接完成时关闭自身。
太棒了...谢谢你。希望它能帮助更多的人。我会尽量在稍后用我的编码解决方案更新这篇文章。 – blissweb 2012-03-19 12:47:01
没有确切的方法可以做到这一点 - 您可以期待的最好方法是使用呈现视图控制器中的viewDidDisappear:
。请确保使用布尔实例变量来确定您是否正在消失,因为模态视图控制器正在呈现或其他原因。老实说,如果你正在构建新的软件,我坚决鼓励你将iOS 5和更高版本作为目标。绝大多数人已经升级,其余的将在几个月内;没有理由为新项目支持iOS 4。
谢谢。我会试一试。我想我也可以在模态加载后发回消息。任何想法“viewWillAppear”和“viewDidLoad”块或哪些其他只会在动画完成后触发*的内容? – blissweb 2012-03-19 03:47:22
这是一个非常好的问题 - 苹果关于[View Controller Life Cycle]的文档(https://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ViewLoadingandUnloading/ViewLoadingandUnloading.html#//apple_ref/doc/uid/TP40007457-CH10-SW1)非常全面。我建议阅读表4-1以了解放入哪种方法的逻辑。如果您使用xib而不是故事板,那很好,本指南仍然适用。 – 2012-03-19 12:38:32
出于好奇,价值是什么样的呈现,然后立即驳回模态视图控制器? – CodaFi 2012-03-18 05:10:21
噢...我提出了一个请稍候屏幕,并执行一些可能需要一分钟左右的网络请求。如果连接出现错误,有时会在动画完成之前检测到它。如果我解雇它,那么它似乎忽略了这个命令。 – blissweb 2012-03-18 15:09:55
如果您只想向他们展示您在长时间运行的流程完成时正在做些什么,例如从Web上获取一些数据,请尝试使用['SVprogressHUD'](https://github.com/samvermette/SVProgressHUD) 。它将禁用界面并显示一个'UIActivityIndicator'。 – 2012-03-18 22:19:56