【问题标题】:viewWillAppear getting called before viewDidDisappear of another controller gets finished在另一个控制器的 viewDidDisappear 完成之前调用 viewWillAppear
【发布时间】:2012-07-09 13:04:33
【问题描述】:

我有 2 个视图控制器,分别是 VC-1、VC-2。我通过导航堆栈在 VC-1 上显示了 VC-2。 VC-1 有 textView,VC-2 有 webView。现在我需要在 VC-2 弹出后立即更新 VC-1 的内容。因此,我使用 VC-2 的 viewDidDisappear 方法来设置内容,并在 VC-1 的 viewWillAppear 中使用它来更新 textView(VC-1 的内容)。但是在 viewDidDisappear 完成之前,VC-1 的 viewWillAppear 被执行并且内容没有更新。我已经通过 NSLogging 检查了这一点。 viewDidDisappear 有一些文件读取内容,所以我猜这是导致问题的原因。如何在 DidDisappear(VC-2) 完成后调用 WillAppear(of VC-1)?

【问题讨论】:

    标签: objective-c ipad ios5 xcode4.3


    【解决方案1】:

    -viewWillAppear: 在您的视图出现在屏幕上之前被调用。 -viewDidDisappear: 在您的视图完全从屏幕上消失后调用。因此,在任何类型的动画过渡中,例如导航堆栈弹出/推送,传入的 VC 的 -viewWillAppear: 必须在离开的 VC 的 -viewDidDisappear: 被调用之前被调用。这是完全正确的。

    您可能应该将您在-viewDidDisappear: 中所做的工作转移到-viewWillDisappear:

    【讨论】:

    • 非常感谢!我把头发拉出来试图修复它。感谢您提供有关方法的信息,我不知道。说真的,你刚刚救了我的命。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 2012-07-30
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多