在返回导航控制器中的屏幕时,viewDidload方法是否再次调用?

时间:2015-11-18 11:07:12

标签: ios viewdidload

我正在使用导航控制器。我已将两个viewcontroller推送到导航堆栈。当我使用导航栏的后退按钮从 viewcontroller2 返回 viewcontroller1 时,再次调用 viewcontroller1 viewdidload方法。但是据我所知,viewdidload只在加载时被调用一次。那为什么会这样呢?请告诉我。

谢谢!

4 个答案:

答案 0 :(得分:2)

仅在加载视图控制器时调用

-(void)viewDidLoad

但是如果你想调用任何方法,那么你可以在

中编写代码
-(void)viewWillAppear

每次出现视图时都会调用此方法。

答案 1 :(得分:2)

关于viewDidLoad

每次加载视图控制器的视图时都会调用

viewDidLoad:不仅仅是第一次。在控制器的生命周期内,控制器的视图可以多次加载和卸载,每次都会调用viewDidLoad。只要它不在屏幕上,它就可以被卸载,通常是在内存不足时。

最佳做法

请记住,不要在viewDidLoad中查看控制器初始化。这是一个常见的错误。对于应该只在加载视图控制器时发生一次的东西,在控制器的一个init方法中执行它。

答案 2 :(得分:1)

如果您正在弹出/取消它,通常不会调用viewDidLoad,但是viewDidAppear会调用。

例外情况是在6.0之前的iOS版本中,如果您收到内存警告,则可以卸载您的视图,并在弹出时重新加载。

答案 3 :(得分:0)

当您推动视图控制器时,AFAIK会创建一个他们正在呈现的视图控制器的新实例。当你回到viewController1时,它的viewDidLoad将不会被调用,但每次从viewController1移动到viewController2时都会调用viewController2 viewDidLoad。当你从viewController2执行pop时,它自己被解除分配