05_视图控制器_2 UIViewController的生命周期

在视图控制器从生到死的过程中,会经历以下进程

 1 - (void)viewDidLoad {
 2     [super viewDidLoad];
 3     // Do any additional setup after loading the view from its nib.
 4 }
 5
 6 - (void)viewWillAppear:(BOOL)animated{
 7     [super viewWillAppear:animated];
 8     NSLog(@"视图将要显示");
 9 }
10 - (void)viewDidAppear:(BOOL)animated{
11     [super viewDidAppear:animated];
12     NSLog(@"视图已经显示");
13 }
14
15 - (void)viewWillLayoutSubviews{
16     [super viewWillLayoutSubviews];
17     NSLog(@"viewWillLayoutSubviews");
18 }
19 - (void)viewDidLayoutSubviews{
20     [super viewDidLayoutSubviews];
21     NSLog(@"viewDidLayoutSubviews");
22 }
23
24 - (void)viewWillDisappear:(BOOL)animated{
25     [super viewWillDisappear:animated];
26     NSLog(@"视图将要移除");
27 }
28 - (void)viewDidDisappear:(BOOL)animated{
29     [super viewDidDisappear:animated];
30     NSLog(@"视图已经移除");
31 }
32 - (void)dealloc{
33     NSLog(@"视图被销毁");
34 }

其中最一开始被调用的应该是loadView方法,但因现阶段水平不足,不敢去复写该方法

在一次切换界面,产生以下输出结果

2016-07-01 20:36:25.001 task2[11634:670742] 视图将要显示
2016-07-01 20:36:25.005 task2[11634:670742] viewWillLayoutSubviews
2016-07-01 20:36:25.005 task2[11634:670742] viewDidLayoutSubviews
2016-07-01 20:36:25.039 task2[11634:670742] viewWillLayoutSubviews
2016-07-01 20:36:25.040 task2[11634:670742] viewDidLayoutSubviews
2016-07-01 20:36:25.050 task2[11634:670742] 视图已经显示
2016-07-01 20:36:30.011 task2[11634:670742] 视图将要移除
2016-07-01 20:36:30.520 task2[11634:670742] 视图已经移除

其中视图布局被调用两次,第一次是布局系统自己添加的控件,第二次是布局编程者添加的控件

@end

时间: 2024-10-12 14:19:25

05_视图控制器_2 UIViewController的生命周期的相关文章

iOS程序执行顺序和UIViewController 的生命周期(整理)

说明:此文是自己的总结笔记,主要参考: iOS程序的启动执行顺序 AppDelegate 及 UIViewController 的生命周期 UIView的生命周期 言叶之庭.jpeg 一. iOS程序的启动执行顺序 程序启动顺序图 iOS启动原理图.png 具体执行流程 程序入口进入main函数,设置AppDelegate称为函数的代理 程序完成加载[AppDelegate application:didFinishLaunchingWithOptions:] 创建window窗口 程序被激活[

iOS程序的执行顺序 和 UIViewController的生命周期

iOS程序的执行顺序 1 进入程序的入口 进入main函数, 设置AppDelegate称为函数的代理 2  程序完成加载 -[AppDelegate application:didFinishLaunchingWithOptions:] 3 创建window窗口 4 程序被激活 -[AppDelegate applicationDidBecomeActive:] 5 当点击command+H时  程序取消激活状态 -[AppDelegate applicationWillResignActiv

iOS程序执行顺序 AppDelegate及 UIViewController 的生命周期

iOS程序的启动执行顺序 AppDelegate 及 UIViewController 的生命周期 iOS应用程序的状态切换很重要,而UIViewControler对于iOS这种MVC模式来说尤为重要,基本都要继承自他. 一.iOS程序的启动执行顺序 1 程序的入口 进入main函数, 设置AppDelegate称为函数的代理 2  程序完成加载 -[AppDelegate application:didFinishLaunchingWithOptions:] 3 创建window窗口 4 程序

【iOS】UIViewController的生命周期

UIViewController中存在的2个循环: 在UIViewController中,View存在两个循环:加载循环和卸载循环. 加载循环 1>程序请求controller的view. 2>如果view在内存中,则直接加载.相反,如果不存在,则UIViewController调用loadView方法. 3>loadView方法执行如下操作: 如果你重载了这个方法,则必须创建必要的view并且将一个非nil值传给UIViewController的view属性. 如果你没有重载这个函数,

UIViewController的生命周期

iOS基础界面就是通过UIViewController展示的.首先区分content controller和container controller的区别.content controlller就是展示我们当前页面的controller,而container controller就是一个管理content controller的容器,基本就是UINavigationController和UITabbarController,本身它也是继承UIViewController,一个UIViewCont

UIViewController的生命周期及方法调用顺序

ViewController解析 UIViewController是iOS顶层视图的载体及控制器,用户与程序界面的交互都是由UIViewController来控制的,UIViewController管理UIView的生命周期及资源的加载与释放. UIView与UIWindow共同展示了应用程序的用户界面.可以将UIView理解成画布,UIWindow理解成画框.这两个类的继承关系是这样的: NSObject — UIResponder — UIView — UIWindow  (UIWindow

UIViewController的生命周期及iOS程序执行顺序

当一个视图控制器被创建,并在屏幕上显示的时候. 代码的执行顺序1. alloc                                   创建对象,分配空间2.init (initWithNibName) 初始化对象,初始化数据3.loadView                          从nib载入视图 ,通常这一步不需要去干涉.除非你没有使用xib文件创建视图4.viewDidLoad                   载入完成,可以进行自定义数据以及动态创建其他控件5

05_视图控制器_1

视图控制器的概念和作用: 视图控制器像一个大管家一样,负责视图的添加,卸载,横竖屏等 每一个界面都由一个视图控制器来管理 UIViewController是所有视图控制器的父类 每一个视图控制器都自带一个UIView //在没有创建XIB文件的时候,第3行代码并不会被执行. //因为执行创建myViewController1的view的前提条件是:1.当前视图控制器的根视图是nil 2.调用了根视图的选择器getter方法 1 myViewController1 *mycontr1 = [[my

UIViewController 的生命周期 & iOS程序的启动顺序

当一个视图控制器被创建,并在屏幕上显示的时候. 代码的执行顺序 1. alloc                                   创建对象,分配空间 2.init (initWithNibName) 初始化对象,初始化数据 3.loadView                          从nib载入视图 ,通常这一步不需要去干涉.除非你没有使用xib文件创建视图 4.viewDidLoad                   载入完成,可以进行自定义数据以及动态创建其