我有以下情况:
在vcA中(当用户点击UI中的按钮时):
回到vcA -
重复该过程(模拟用户在UI中点击相同按钮的操作):
所以,我非常困惑。
提前致谢...... Sam。
答案 0 :(得分:11)
正如您可能从名称中猜到的那样,每当视图控制器的视图即将被隐藏,删除等时,都会调用-viewWillDisappear。UIViewController reference page上的完整描述。
-viewDidLoad和-viewWillDisappear不是匹配的集合。为了节省资源,并且由于某些视图控制器可能永远不会最终显示其视图,因此视图控制器仅在第一次实际需要时才加载视图。 -viewDidLoad在发生后调用。
-viewWillAppear和-viewDidAppear在实际显示视图之前和之后被调用。同样,在视图不再可见之前和之后调用-viewWillDisappear和-viewDidDisappear。
最后,-viewDidUnload是-viewDidLoad的对应部分,如果视图被丢弃则调用它。当系统需要释放一些内存时就会发生这种情况,但根本不会发生这种情况。
在iOS 6中viewWillUnload
和viewDidUnload
已弃用
所以,为了直接解决你的第二个问题,vcB的-viewDidLoad没有第二次被调用,因为到那时vcB已经加载了它的视图并且不需要再次执行它。