iOS之UI随笔-视图控制器的生命周期

在我们开发的过程中经常要控制视图出现顺序已达到良好的视图效果,这时候就要合理的判断每个视图控制器在程序中出现的顺序,以便达到需求。这里用代码直观的解释更为准确:

MainViewController.m文件
(DetailViewController为创建的详情页面的控制器)

#import "MainViewController.h"
#import "DetailViewController.h"
@interface MainViewController ()

@end

@implementation MainViewController
/*
 根视图执行顺序,始终是根视图的变化过程
 //刚启动程序的视图执行顺序
 initWithNibName
 init
 loadView
 viewDidLoad
 viewWillAppear
 viewDidAppear
 //此时点击button跳转
 viewWillDisappear
 viewDidDisappear
 //此时点击返回button回到第一界面
 viewWillAppear
 viewDidAppear
 【注】loadView、viewDidLoad默认执行一次 不会随界面跳转返回重复执行 通常不要手动调用该方法
 【注】通过第二个界面改变第一个界面内容,通常在第一界面的viewWillAppear或viewDidAppear方法中执行
 */
//仍为初始化方法 当使用xib(可视化图形界面编程)时会使用
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        NSLog(@"initWithNibName");
    }
    return self;
}
//视图控制器初始化方法 通常用于初始化成员变量与属性
- (instancetype)init{
    if (self = [super init]) {
        NSLog(@"init");
    }
    return self;
}

//加载视图 如果不重写该方法 创建视图控制器时 会自动调用该方法创建View 如果重写了 一定要书写[super loadView]
- (void)loadView{
    [super loadView];
    NSLog(@"loadView");
}
//视图加载完成的方法
- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"viewDidLoad");
    self.view.backgroundColor = [UIColor greenColor];

    //创建跳转按钮
    UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [button setTitle:@"跳转详情页面" forState:UIControlStateNormal];

    button.frame = CGRectMake(50, 100, 275, 50);

    [button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:button];

    // Do any additional setup after loading the view.
}
//按钮点击事件
- (void)buttonClick{
    //跳转
    DetailViewController * detailVC = [[DetailViewController alloc]init];

    [self presentViewController:detailVC animated:YES completion:nil];
}
//视图将要出现的方法
- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    NSLog(@"viewWillAppear");
}
//视图已经出现的方法
- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    NSLog(@"viewDidAppear");
}
//视图将要消失的方法
- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    NSLog(@"viewWillDisappear");
}
//视图已经消失的方法
- (void)viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];
    NSLog(@"viewDidDisappear");
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

DetailViewController.m文件

#import "DetailViewController.h"

@interface DetailViewController ()

@end

@implementation DetailViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.view.backgroundColor = [UIColor yellowColor];

    UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [button setTitle:@"返回第一界面" forState:UIControlStateNormal];

    button.frame = CGRectMake(50, 100, 275, 50);

    [button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:button];

    // Do any additional setup after loading the view.
}
//返回按钮点击事件
- (void)buttonClick{

    [self dismissViewControllerAnimated:YES completion:nil];
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

配图:

这里写图片描述

这里写图片描述

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值