- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil viewDidLoad viewWillAppear viewWillDisapppear
《iOS编程》P137
关于视图的初始化代码不能写在视图控制器的初始化(1),原因如下:为了实现视图延迟加载,在initWithNibName:bundle:中不应该访问view或view的子视图,而应该放在viewDidLoad中;
viewDidLoad:这个方法是用于确认视图已经加载,该方法会在视图控制器加载完NIB文件之后被调用;
viewWillAppear:该方法会在视图控制器的view添加到应用窗口之前被调用;
这两个方法的区别是:如果只需要在启动后设置一次视图对象,就选择viewDidLoad;如果用户每次看到视图控制器的view时都需要对其进行设置,则选择viewWillAppear;
P205
当 UINavigationController 对象切换视图时,其包含的两个 UIViewController 对象分别收到 viewWillDisappear: 消息和 viewWillAppear:消息;