我正在使用导航控制器。我已经将两个视图控制器推送到导航堆栈。当我使用导航栏的后退按钮从viewcontroller2返回viewcontroller1时,将再次调用viewcontroller1的viewdidload
方法。但据我所知,viewdidload在加载时只调用一次。那么,为什么会发生这种情况呢?请告诉我。
谢谢!!
-(void)viewDidLoad
仅在视图控制器加载时调用
但是如果你想调用任何方法,那么你可以在中编写代码
-(void)viewWillAppear
每次出现视图时都调用此方法。
关于viewDidLoad
每次加载视图控制器的视图时都会调用viewDidLoad:
,而不仅仅是第一次。在控制器的使用寿命期间,可以多次加载和卸载控制器的视图,每次都会调用viewDidLoad
。它可能会在不在屏幕上的时候卸载,通常是在内存不足的情况下。
最佳实践
记住不要在viewDidLoad
中进行视图控制器初始化。这是一个常见的错误。对于在加载视图控制器时应该只发生一次的事情,请在控制器的一个init方法中执行。
如果您弹出/驳回它,通常不会调用viewDidLoad,但会调用viewDidAppear。
例外情况是在6.0之前的iOS版本中,如果您收到内存警告,您的视图可能会被卸载,并且在弹出时会重新加载。
当您推送视图控制器时,AFAIK会创建一个新的视图控制器实例。当您返回到viewController1时,它的viewDidLoad将不会被调用,但每次您从viewController2移动到viewController 2时,都会调用viewController2viewDidload。当您从viewController2执行弹出操作时,它会在中释放