什么时候会调用viewWillDisappear?什么时候不会调用?(涉及IT技术)

7
我有以下情景:
在vcA中(当用户在UI中点击按钮): - 使用NIB文件实例化vcB-(当用户在UI中点击按钮) - 初始化vcB中的一个iVar - 使用presentModalViewController展示vcB - 在vcB的viewDidLoad中触发断点 - 在vcB的视图加载之前,调用vcA的viewWillDisappear(我通过NSLog语句看到它) - vcB的视图加载完成 - 显示其iVar的正确值(该值在vcA中设置) - 使用dismissModalViewController关闭vcB
回到vcA的视图: - 重复此过程(模拟用户点击UI中相同的按钮的操作): - 使用NIB文件实例化vcB - 更改vcB中的iVar值 - 使用presentModalViewController展示vcB - 这一次,vcB的viewDidLoad未被触发断点 - 在vcB的视图加载之前,也调用了vcA的viewWillDisappear - vcB的视图加载完成 - 显示其iVar的错误值(它是先前的值)
所以,我非常困惑。
1. 为什么会调用vcA的viewWillDisappear?在什么条件下会调用? 2. 第二次为什么不会调用vcB的viewDidLoad?我应该使用“addSubview”吗?
提前感谢.... Sam。

您不必道歉。只需学习如何使用标记! - Yuji
您可以进行编辑,特别是为了提高清晰度、修复错误等。 - Caleb
1个回答

12
正如名称所示,-viewWillDisappear在视图控制器的视图即将隐藏、移除等时调用。完整描述请参见UIViewController reference page
-viewDidLoad和-viewWillDisappear不是一组匹配的方法。为了节省资源,并且因为某些视图控制器可能永远不会显示它们的视图,视图控制器仅在第一次实际需要时加载其视图。当这种情况发生后,-viewDidLoad被调用。
-viewWillAppear和-viewDidAppear在视图实际显示之前和之后分别调用。同样,-viewWillDisappear和-viewDidDisappear在视图不再可见之前和之后调用。
最后,-viewDidUnload是与-viewDidLoad相对应的方法,如果视图被丢弃,则调用该方法。当系统需要释放一些内存时,可能会发生这种情况,但可能根本不会发生。
在iOS 6中,viewWillUnloadviewDidUnload已经过时
因此,针对您的第二个问题,vcB的-viewDidLoad没有第二次调用,因为那时vcB已经加载了其视图,不需要再次加载。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接