据我所知,至少有两种方法可以在另一个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];
所以我的问题是,这些不同的回调序列是稳定的,还是没有我们可以依赖的确定序列?如果它们稳定,是否有任何文件提到这种行为? 有人可以帮忙吗?先谢谢!
答案 0 :(得分:0)
UIKit 应该在主线程上工作,所以我猜这个序列是稳定的,对于当前的SDK版本。但是,只要行为没有记录(并且我不知道),我认为它可能会在没有通知的情况下发生变化。
我只是好奇;为什么你需要这些方法的确定性序列?也许你可以找到一种解决方法(这可能是一种更好的方法)。
答案 1 :(得分:0)
您肯定希望实施某种形式的同步来强制执行您想要执行的操作。依靠Apple对这些功能的调用序列只是在寻找麻烦。