1.直接上一个大概的图,给大家参考一下:
2.
viewWillAppear视图将要出现的时候调用
viewDidApperar视图已经出现的时候调用
viewWellDisappear视图将要消失的时候调用
viewDidDisappear视图已经消失的时候调用
3.下面说说真事环境的测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | - ( void )viewDidLoad { [ super viewDidLoad]; NSLog (@ "%s" ,__func__); } - ( void )viewWillAppear:( BOOL )animated{ NSLog (@ "%s" ,__func__); } - ( void )viewDidAppear:( BOOL )animated{ NSLog (@ "%s" ,__func__); } - ( void )viewWillDisappear:( BOOL )animated{ NSLog (@ "%s" ,__func__); } - ( void )viewDidDisappear:( BOOL )animated{ NSLog (@ "%s" ,__func__); } |
结果:我使用了上面的方法去做测试:
分两种情况:
第一种情况,只有一个视图控制器,且这段代码就是测试这个视图控制器,那么你进入程序到退出程序,会调用的方法有:
1 2 3 | 2016-04-08 20:41:28.894 p[30307:311272] -[dd viewDidLoad] 2016-04-08 20:41:28.894 p[30307:311272] -[dd viewWillAppear:] 2016-04-08 20:41:29.397 p[30307:311272] -[dd viewDidAppear:] |
第二种情况,有两个视图控制器,且这段代码是去测试第二个控制器,从第一个控制器跳到第二个;这个时候会调用,注意:现在还没有退回到第一个:会调用的是和上面第一种情况一样;但如果回到第一个控制器,现在还会调用:
1 2 | 2016-04-08 20:45:52.955 p[30556:314999] -[dd viewWillDisappear:] 2016-04-08 20:45:53.461 p[30556:314999] -[dd viewDidDisappear:] |
为什么会出现上面的情况呢?
网友的解答:可能是因为效率原因。第一个进去的viewController不做这样的处理,避免再次构造。(不知道是不是这个原因,暂且记着)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合终身会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步