iOS——ViewController的生命周期

引言

本篇文章是对ViewController从出现、产生作用到消失过程的探究,即ViewController的生命周期。

ViewController

ViewController是iOS应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁,管理着应用中的众多视图。 iOS的SDK中提供很多原生ViewController,以支持标准的用户界面,如表视图控制器(UITableViewController)、导航控制器(UINavigationController)、标签栏控制器(UITabbarController)等。

按结构可以对iOS的所有ViewController分成两类:

  1. 主要用于展示内容的ViewController,这种ViewController主要用于为用户展示内容,并与用户交互,如UITableViewControllerUIViewController
  2. 用于控制和显示其他ViewController的ViewController。这种ViewController一般都是一个ViewController的容器。如UINavigationControllerUITabbarController。它们都有一个属性:viewControllers。其中UINavigationController表示一种Stack式结构,push或pop一个ViewController,后一个ViewController会依赖前一个ViewController。而UITabbarController表示一个Array结构,各个ViewController是并列的。

ViewController的生命周期

请添加图片描述

- (void) awakeFromNib

view如果是由xib创建,它会执行awakeFromNib方法,此方法是当xib或者storyboard加载完之后调用,此时nib文件中已经连线好的对象已经完成初始化,frame位置已固定。

- (void) loadView

用于创建Controller的View。每次访问controller的view(比如controller.view、self.view)且view为nil,loadView方法就会被调用。
loadView在ViewController的生命周期中一般情况只会被调用一次。

- (void) viewDidLoad

在视图控制器将视图层次结构加载到内存之后调用,无论视图层次结构是从nib文件中加载还是从loadView方法里用代码实现都会执行此方法。如果是在代码中创建的视图加载器,他将会在loadView方法后被调用;如果是从nib视图页面输出,他将会在视图设置好后后被调用。

- (void) viewWillAppear:(BOOL)animated

通知视图控制器其视图即将添加到视图层次结构中。

- (void) viewWillLayoutSubViews

通知视图控制器其视图将要布局它的子视图。

- (void) viewDidLayoutSubViews

通知视图控制器其视图已将其子视图布局好。

- (void) viewDidApper:(BOOL)animated

通知视图控制器其视图已经添加到视图层次结构中。

- (void) viewWillDisappear:(BOOL)animated

通知视图控制器其视图将要从视图层次结构中删除。

- (void) viewDidDisappear:(BOOL)animated

通知视图控制器其视图已经从视图层次结构中删除。

- (void) didReceiveMemoryWarning

当应用收到内存警告时会调用此方法。

demo

demo创建了两个ViewController:ViewController和SecondViewController。在ViewController中可以present到SecondViewController,在SecondViewController中可以dismiss到ViewController。

//ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@end
//ViewController.m

#import "ViewController.h"
#import "SecondViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
   
    [super viewDidLoad
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值