UIViewController
UIViewController的继承关系
iPhone App开发时UIViewController不是必不可少,下面的程序直接加载在AppDelegate.m文件的window上。
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
// 设置背景颜色
self.window.backgroundColor = [UIColor colorWithRed:200.0 green:0.0 blue:200.0 alpha:1.0];
// 将window设置为app的主window并且可见
[self.window makeKeyAndVisible];
// 内存管理
[_window release];
// UIView 代表屏幕上的一块矩形区域
//所有空间类的基类
//规定了所有控件的基本行为和属性
UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 375, 300)];
view.backgroundColor = [UIColor purpleColor];
// 将 view加到 windiw上
[self.window addSubview:view];
[view release];
但是,像上述这样实现画面外观的切换,如果同一个画面中实际上包含多个画面的控件,代码看起来将非常凌乱。如果能将不同外观的画面进行整体的切换显然更合理,UIViewController正是用于实现这种画面切换方式的。
UIViewController的创建
在UIViewController使用时需要先创建一个子类,并在AppDelegate.m中声明rootViewController为UIViewController子类的对象
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
// UIViewController
// 1.UIViewController的一个对象代表一个页面,负责处理一部分功能(登录页面,注册页面,找回密码页面......是不同的viewController)
// 2. UIviewController是一个抽象类,即不能直接使用如果要使用需要创建它的子类才能使用
RootViewController *rootVC = [[RootViewController alloc]init];
//给window设置一个根视图控制器,作为启动之后的默认显示的界面
self.window.rootViewController = rootVC;
[rootVC release];
[_window release];
return YES;
}
UIViewController的生命周期
1.初始化方法:init,initWithCoder;
2.加载controller's view:loadView: controller.view=nil; viewDidLoad: controller.view=view;
3.当收到didREceiveMemoryWarning的时候会调用viewWillUnload,viewDidUnload;
4.dealloc:释放资源(ARC可以忽略)