本文介绍以下内容:
-
UITabBarViewController的TabBar设置控制器,并重写控制器中的方法,观察控制器切换时的方法执行
-
程序启动后,方法执行的先后顺序
二 UITabBarViewController的TabBar控制器的执行
2.1 过程描述
-
给TabBar的每个控制器重新ViewController方法,并重写ViewController中的方法,并给每个重写的方法添加打印输出
-
在Main.stroyboard布局文件中,给每个TabBar绑定相应的自定义ViewController
-
切换TabBar,观察方法的打印输出
2.2 代码实现
-
分别添加MessageViewController,QworldViewController,ContactViewController,SettingViewController(每个中都重写了viewDidLoad,viewWillAppear,viewDidAppear,viewWillDisappear,viewDidDisappear)
-
打开
Main.storyboard
,找到对应的TabBar绑定自定义ViewController -
切换UITabBar查看打印消息
-
第一次显示时打印消息
1 |
2
3
-[MessageViewController viewDidLoad]
-[MessageViewController viewWillAppear:]
-[MessageViewController viewDidAppear:]
- 切换到第二个UITabBar时,显示消息
1 |
2
3
4
5
-[ContactViewController viewDidLoad]
-[ContactViewController viewWillAppear:]
-[MessageViewController viewWillDisappear:]
-[MessageViewController viewDidDisappear:]
-[ContactViewController viewDidAppear:]
2.3 总结
-
当页面要显示时,会先后执行viewDidLoad,viewWillAppear,viewDidAppear
-
当切换到第二个页面时:先执行第二个页面的viewDidLoad,viewWillAppear,再执行第一个页面的viewWillDisappear,viewDidDisappear,最后执行第二个页面的viewDidAppear
-
viewDidLoad:在视图加载后被调用,如果是在代码中创建的视图加载器,他将会在loadView方法后被调用,如果是从nib视图页面输出,他将会在视图设置好后后被调用
-
viewWillAppear:当收到视图在视窗将可见时的通知会呼叫的方法。默认情况下不执行任何操作
-
viewDidAppear:当收到视图在视窗已可见时的通知会呼叫的方法,(视图已完全过渡到屏幕上时调用)
-
viewWillDisappear:当收到视图将去除、被覆盖或隐藏于视窗时的通知会呼叫的方法。默认情况下不执行任何操作loadView;这是当他们没有正在使用nib视图页面,子类将会创建自己的自定义视图层。绝不能直接调用
-
viewDidDisappear:当收到视图已去除、被覆盖或隐藏于视窗时的通知会呼叫的方法
三 程序启动后,方法执行的先后顺序
3.1 程序第一次启动后
1 |
2
3
4
-[AppDelegate application:didFinishLaunchingWithOptions:]
-[SceneDelegate scene:willConnectToSession:options:]
-[SceneDelegate sceneWillEnterForeground:]
-[SceneDelegate sceneDidBecomeActive:]
3.2 切换到后台后
1 |