【发布时间】:2009-06-13 01:05:03
【问题描述】:
有没有办法知道dismissModalViewControllerAnimated什么时候启动,什么时候完成(比如viewWillAppear和viewDidAppear的成语)?与其他动画不同,这个动画似乎没有代表告诉你。
【问题讨论】:
标签: iphone objective-c cocoa-touch uikit
有没有办法知道dismissModalViewControllerAnimated什么时候启动,什么时候完成(比如viewWillAppear和viewDidAppear的成语)?与其他动画不同,这个动画似乎没有代表告诉你。
【问题讨论】:
标签: iphone objective-c cocoa-touch uikit
是的,而且比您想象的要容易。
当调用dismissModalViewControllerAnimated: 时,底层视图(即将出现的视图)将收到一个viewWillAppear 消息和一个viewDidAppear 消息。
警告:确保您的视图控制器连接正确,否则这些消息会丢失。
【讨论】:
恐怕 viewWillAppear 和 viewDidAppear 并不总是有效。 在 iPhone 上他们会这样做,在 iPad 上他们可能不会。 如果呈现的 UIViewController 不是全屏呈现(例如,如果它呈现为表单),则父视图将不会接收 viewWillAppear 或 viewDidAppear 生命周期函数。不幸的是,我发现的唯一方法是在调用 dismissModalViewControllerAnimated 时调用我自己的委托消息(通过引用或通知以太)
【讨论】:
您可以使用视图外观方法。如果您需要在动画完成后发生一些事情,您可以使用[object performSelector:@selector(selector) withObject:anotherObject afterDelay:0]。我不知道具体原因,但是动作会安排在当前的运行循环上,但是在动画完成之后。
【讨论】: