ViewController的生命周期

ViewController的生命周期

函数介绍

viewDidLoda:在视图加载后被调用,如果是在代码中创建的视图加载器,他将会在loadView方法后被调用,如果是从nib视图页面输出,他将会在视图设置好后后被调用。此函数在视图销毁之前只会调用一次.想调用第二次除非视图已经销毁.然后重新创建。

loadView:每次访问controller的view(比如controller.view、self.view)且view为nil,loadView方法就会被调用。用于创建Controller的View。

viewWillAppear:视图将要显示,这个方法的首次调用是在viewDidLoad创建了视图并且马上将要显示的时候。

viewDidAppear:视图已经显示,一般这个方法是在viewWillAppear之后调用的。

viewWillDisAppear:视图即将消失,这个方法会在视图将要消失的时候调用.比如按push的时候.Apush到B.先调用B的viewDidLoad(不用考虑LoadView).然后调用A的viewWillDisAppear.然后是B的viewWillAppear。

viewDidDisAppear:视图已经消失,在Controller被切换时调用,第二个视图出现后第一个视图消失。

viewWillLayoutSubviews: 控制器的view将要布局子控件(在这个方法里,部署需要改变重新刷新view的代码,功能类似view的layoutSubViews()这个方法,需要注意的是,这个方法里一般都需要重置的view的frame,宽度和高度的获取,因此view的frame一般都写在这个方法里)。

viewDidLayoutSubviews: 控制器的view布局子控件完成。

实例

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property(nonatomic , strong)UIButton *button;


@end


#import "ViewController.h"
#import "SonViewController.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"viewDidLoad");
    _button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    _button.frame = CGRectMake(195, 422, 80, 80);
    [_button setTitle:@"按钮" forState:UIControlStateNormal];
    [_button addTarget:self action:@selector(press) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:_button];
}


- (void)press {
    SonViewController *son = [[SonViewController alloc] init];
    son.modalPresentationStyle = UIModalPresentationFullScreen;
    [self presentViewController:son animated:NO completion:nil];
}

- (void)loadView {
    [super loadView];
    NSLog(@"loadView");
}
- (void)viewDidAppear:(BOOL)animated {
    NSLog(@"viewDidAppear!");
}
- (void)viewDidDisappear:(BOOL)animated {
    NSLog(@"viewDidDisappear!");
}
- (void)viewWillAppear:(BOOL)animated {
    NSLog(@"viewWillAppear!");
}
- (void)viewWillDisappear:(BOOL)animated {
    NSLog(@"viewWillDisappear!");
}
- (void)viewDidLayoutSubviews {
    NSLog(@"viewDidLayoutSubviews!");
}
- (void)viewWillLayoutSubviews {
    NSLog(@"viewWillLayoutSubviews!");
}

@end
@interface SonViewController : UIViewController
@property(nonatomic , strong)UIButton *backButton;
@end


#import "SonViewController.h"

@interface SonViewController ()

@end

@implementation SonViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor yellowColor];
    NSLog(@"viewDidLoad");
    _backButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    _backButton.frame = CGRectMake(195, 422, 80, 80);
    [_backButton setTitle:@"按钮" forState:UIControlStateNormal];
    [_backButton addTarget:self action:@selector(press) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:_backButton];
}

- (void)press {
    [self dismissViewControllerAnimated:NO completion:nil];
}

- (void)viewDidDisappear:(BOOL)animated {
    NSLog(@"sonviewDidDisappear");
}

- (void)viewWillDisappear:(BOOL)animated {
    NSLog(@"sonviewWillDisappear");
}

- (void)viewDidAppear:(BOOL)animated {
    NSLog(@"sonviewDidAppear");
}

- (void)viewWillAppear:(BOOL)animated {
    NSLog(@"sonviewWillAppear");
}


@end

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值