相关方法
这些方法都是UIViewController类的方法:
1. -(void)viewDidLoad;
- 一个APP在载入时会先通过调用loadView方法,将视图载入到内存中。然后会调用viewDidLoad方法来进行进一步的设置。通常,我们对于各种初始数据的载入,初始设定等很多内容,都会在这个方法中实现。但是要注意,这个方法只会在APP刚开始加载的时候调用一次,以后都不会再调用它了,所以只能用来做初始设置
2. -(void)loadView;
- 每次访问controller的view(比如controller.view、self.view)且view为nil,loadView方法就会被调用。用于创建Controller的View。
3. -(void)viewWillAppear:(BOOL)animated;
- 系统在载入所有数据后,将会在屏幕上显示视图,这时会先调用这个方法。通常我们会利用这个方法,对即将显示的视图做进一步的设置。
- 当APP有多个视图时,在视图间切换时,并不会再次载入viewDidLoad方法,所以如果在调入视图时,需要对数据做更新,就只能在这个方法内实现了。
4. -(void)viewDidAppear:(BOOL)animated;
- 有时候,由于一些特殊的原因,我们不能在viewWillApper方法里,对视图进行更新。那么可以重写这个方法,在这里对正在显示的视图进行进一步的设置。
5. -(void)viewWillDisappear:(BOOL)animated;
- 在视图变换时,当前视图在即将被移除、或者被覆盖时,会调用这个方法进行一些善后的处理和设置。由于在IOS4之后,系统允许将APP在后台挂起,所以在按了Home键之后,系统并不会调用这个方法,因为就这个APP本身而言,APP显示的view,仍是挂起时候的view,所以并不会调用这个方法。
6. -(void)viewDidDisappear:(BOOL)animated;
- 可以重写这个方法,对已经消失,或者被覆盖,或者已经隐藏了的视图做一些其他操作
7. -(void) viewWillLayoutSubviews;
- 控制器的view将要布局子控件(在这个方法里,部署需要改变重新刷新view的代码,功能类似view的layoutSubViews()这个方法,需要注意的是,这个方法里一般都需要重置的view的frame,宽度和高度的获取,因此view的frame一般都写在这个方法里)
8. - (void) viewDidLayoutSubviews ;
- 控制器的view布局子控件完成
代码执行顺序
当一个视图控制器被创建,并在屏幕上显示的时候。代码的执行顺序:
- alloc 创建对象,分配空间
- init (initWithNibName) 初始化对象,初始化数据
- loadView从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图
- viewDidLoad 载入完成,可以进行自定义数据以及动态创建其他控件
- viewWillAppear 视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
- viewDidAppear 视图已在屏幕上渲染完成
- viewWillDisappear: 视图将要消失,在视图消失之前执行
- viewDidDisappear: 视图已经被从屏幕上移除,用户看不到这个视图了
具体代码
- ViewController.m中
#import "ViewController.h"
#import "TwoViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void) viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor whiteColor];
NSLog(@"viewDidLoad");
_pressBtn = [UIButton buttonWithType: UIButtonTypeSystem];