GeekBand.iOS-UIViewController

2016/3/21 posted in  iOS学习笔记  

UIViewController是一个普通的ObjC对象,它的主要功能是管理View、传递数据、响应用户操作、内存管理(状态保持)、适应适配。

iOS设计模式

iOS设计模式

UIViewController调用顺序

ViewController生命周期会经历初始化、加载视图、销毁视图、生命结束等过程。

  1. init方法 初始化ViewController本身。
  2. loadView方法 当view需要被展示而它却是nil时,viewController会调用该方法,如果代码构建View的话需要重写此方法。
  3. viewDidLoad方法 执行完loadView后继续执行viewDidLoad,loadView时还没有view,而viewDidLoad时view已经创建好了。
  4. viewDidUnload方法 当系统内存吃紧的时候会调用该方法。
  5. dealloc 释放其他资源或内存。

View Controller的生命周期如下图所示:
UIViewController生命周期

rootViewController的过程

rootViewController

使用代码指定rootViewController

- (void) tryNibName {
  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

  UIViewController * rootVC = [[UIViewController alloc] initWithNibName:@"rootVC" bundle:nil];
  self.window.rootViewController = rootVC;

  [self.window makeKeyAndVisible];
}

- (void) tryNibOfUserVCName {
  // xib can be MyViewController or MyView
  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  UIViewController * rootVC = [[MyViewController alloc] init];
  self.window.rootViewController = rootVC;

  [self.window makeKeyAndVisible];
}

- (void) tryNibOfVCName {
  // UI prefix in class name means system class, which will bypass xib lookup!
  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  UIViewController * rootVC = [[UIViewController alloc] init];
  self.window.rootViewController = rootVC;

  [self.window makeKeyAndVisible];
}

多个ViewController的替换

ViewController传值

  1. 使用属性进行传值
  2. 使用delegate进行回调进行传值
  3. 使用segue进行传值