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



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

谢谢!!

-(void)viewDidLoad仅在视图控制器加载时调用

但是如果你想调用任何方法,那么你可以在中编写代码

-(void)viewWillAppear

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

关于viewDidLoad

每次加载视图控制器的视图时都会调用viewDidLoad:,而不仅仅是第一次。在控制器的使用寿命期间,可以多次加载和卸载控制器的视图,每次都会调用viewDidLoad。它可能会在不在屏幕上的时候卸载,通常是在内存不足的情况下。

最佳实践

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

如果您弹出/驳回它,通常不会调用viewDidLoad,但会调用viewDidAppear。

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

当您推送视图控制器时,AFAIK会创建一个新的视图控制器实例。当您返回到viewController1时,它的viewDidLoad将不会被调用,但每次您从viewController2移动到viewController 2时,都会调用viewController2viewDidload。当您从viewController2执行弹出操作时,它会在中释放

最新更新