【问题标题】:How to know when dismissModalViewControllerAnimated is initiated and also when it is done?如何知道dismissModalViewControllerAnimated 何时启动以及何时完成?
【发布时间】:2009-06-13 01:05:03
【问题描述】:

有没有办法知道dismissModalViewControllerAnimated什么时候启动,什么时候完成(比如viewWillAppear和viewDidAppear的成语)?与其他动画不同,这个动画似乎没有代表告诉你。

【问题讨论】:

    标签: iphone objective-c cocoa-touch uikit


    【解决方案1】:

    是的,而且比您想象的要容易。

    当调用dismissModalViewControllerAnimated: 时,底层视图(即将出现的视图)将收到一个viewWillAppear 消息和一个viewDidAppear 消息。

    警告:确保您的视图控制器连接正确,否则这些消息会丢失。

    【讨论】:

    • 谢谢,我的代表签名有误,所以我认为在解雇完成后没有调用它。
    • 这个代表签名是什么样的?
    • 我同时实现了 viewDidAppear 和 viewDidAppear。但是当调用 modalviewcontroll 时(作为部分卷曲样式),这些代表并没有被调用。有什么想法吗?
    【解决方案2】:

    恐怕 viewWillAppear 和 viewDidAppear 并不总是有效。 在 iPhone 上他们会这样做,在 iPad 上他们可能不会。 如果呈现的 UIViewController 不是全屏呈现(例如,如果它呈现为表单),则父视图将不会接收 viewWillAppear 或 viewDidAppear 生命周期函数。不幸的是,我发现的唯一方法是在调用 dismissModalViewControllerAnimated 时调用我自己的委托消息(通过引用或通知以太)

    【讨论】:

      【解决方案3】:

      您可以使用视图外观方法。如果您需要在动画完成后发生一些事情,您可以使用[object performSelector:@selector(selector) withObject:anotherObject afterDelay:0]。我不知道具体原因,但是动作会安排在当前的运行循环上,但是在动画完成之后。

      【讨论】:

      • 从 iOS 5 开始,使用 -dismissViewControllerAnimated:completion: 并在动画完成后使用完成块做任何事情。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多