UIViewController
@property(nonatomic,retain) UIView *view;ViewContrlller本身不是一个视图, 想要显示的视图必须要放在这个视图上初始化方法:
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;.h 文件里面引用头文件要用@class避免重复引用, 不要用#import
.m 文件中可以用#import
- (void)viewDidLoad 和
- (void)loadView
将要显示: - (void)viewWillAppear:(BOOL)animated;
已经显示: - (void)viewDidAppear:(BOOL)animated;
将要消失: - (void)viewWillDisappear:(BOOL)animated;
已经消失: - (void)viewDidDisappear:(BOOL)animated;
UIController流程:
程序说明:
- 现有MainViewController和SecondViewController,
- 重写MainViewController中的 loadView, viewWillAppear:, viewDidAppear:, viewWillDisappear:, viewDidDisappear:
- 将MainViewController设为Window的RootViewController, 点击MainViewController上的”点击”按钮,会模态进入SecondViewController,
- 点击SecondViewController上的返回按钮会返回MainViewController
以下为MainViewController中各个方法的执行顺序:
- 初始化方法:
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; NSLog(@"初始化方法:initWithNib"); if (self) { } return self; } - loadView:方法:
- (void)loadView{ [super loadView]; NSLog(@"%s", __func__); NSLog(@"loadView方法"); }
- viewDidLoad:方法:
- (void)viewDidLoad { [super viewDidLoad]; NSLog(@"viewDidLoad方法"); UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 100, 30)]; label1.backgroundColor = [UIColor greenColor]; [self.view addSubview:label1]; [label1 release]; [self createButton]; —> 通过此方法创建一个UIButton, 点击该button会模态进入SecondViewController }
- viewWillAppear:方法:
- (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; NSLog(@"%s", __func__); NSLog(@"将要显示"); }
- viewDidAppear:方法:
点击按钮进入下一页进入SecondViewController时:- (void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; NSLog(@"%s", __func__); NSLog(@"已经显示"); }
- viewWillDisappear:方法:
- (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; NSLog(@"%s", __func__); NSLog(@"将要消失"); }
- viewDidDisappear:方法:
点击按钮返回MainViewController时:<span style="font-size:14px;">- (void)viewDidDisappear:(BOOL)animated{ [super viewDidDisappear:animated]; NSLog(@"%s", __func__); NSLog(@"已经消失"); }</span>
- viewWillAppear:方法:
- (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; NSLog(@"%s", __func__); NSLog(@"将要显示"); }
- viewDidAppear:方法:
- (void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; NSLog(@"%s", __func__); NSLog(@"已经显示");}
方法的意义:
将要显示: - (void)viewWillAppear:(BOOL)animated;
已经显示: - (void)viewDidAppear:(BOOL)animated;
将要消失: - (void)viewWillDisappear:(BOOL)animated;
已经消失: - (void)viewDidDisappear:(BOOL)animated;
本文详细解析了UIViewController的生命周期方法,包括初始化、视图加载、显示及消失等关键阶段,并通过实例展示了这些方法的调用顺序。
341

被折叠的 条评论
为什么被折叠?



