两个视图控制器之间的viewDidAppear和viewDidDis的回调序列

时间:2011-02-22 07:22:06

标签: iphone ipad uiviewcontroller

据我所知,至少有两种方法可以在另一个UIViewController上呈现UIViewController,第一种是使用presentModalViewController:animated:在UIViewController上,另一种是使用pushViewController:animated:在UINavigationController上,当2视图控制器改变它们的外观时,出现/消失回调的调用序列是不同的。下面是一个例子,A是UINavigationController,B是普通的视图控制器,实际的回调序列是:
(1)使用presentModalViewController:animated:显示B:

[B viewWillAppear];  
[A viewWillDisappear];  
[B viewDidAppear];  
[A viewDidDisappear];

(2)使用pushViewController:animated:显示B:

[A viewWillDisappear];  
[B viewWillAppear];  
[A viewDidDisappear];  
[B viewDidAppear];

所以我的问题是,这些不同的回调序列是稳定的,还是没有我们可以依赖的确定序列?如果它们稳定,是否有任何文件提到这种行为? 有人可以帮忙吗?先谢谢!

2 个答案:

答案 0 :(得分:0)

UIKit 应该在主线程上工作,所以我猜这个序列是稳定的,对于当前的SDK版本。但是,只要行为没有记录(并且我不知道),我认为它可能会在没有通知的情况下发生变化。

我只是好奇;为什么你需要这些方法的确定性序列?也许你可以找到一种解决方法(这可能是一种更好的方法)。

答案 1 :(得分:0)

您肯定希望实施某种形式的同步来强制执行您想要执行的操作。依靠Apple对这些功能的调用序列只是在寻找麻烦。