viewWillAppear在另一个控制器的viewDidDisappear完成之前被调用

时间:2012-07-10 04:49:42

标签: objective-c ipad ios5 xcode4.3

我有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(VC-1)被调用?

1 个答案:

答案 0 :(得分:5)

在您的视图完全显示在屏幕上之前,会调用

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

您应该接受-viewDidDisappear:中正在进行的工作,然后将其移至-viewWillDisappear: