UIViewController就最核心的类型之一。而iOS的整个UI开发的核心思想也是MVC的架构,从UIViewController的命名就可以看出它在MVC中所扮演的角色,那就是Controller。
UIViewController基础
首先软件的入口main.m文件起
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
//整个APP程序的主函数,入口函数。
int main(int argc, char * argv[]) {
//自动内存释放池
@autoreleasepool {
//UIK框架结构的启动函数
//参数一;argc,启动时带有参数的个数
//参数二:argb,参数列表
//参数三;要求传入一个主框架类类名,如果参数为nil,系统会自动用默认的框架类做为主框架类名
//参数四;主框架的代理类对象名字
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
注:调用主框架AppDelegate.h
2.系统一般会默认加载一个故事面板Main.storyboard,我们重新写一个加载故事面板
1>Info.plist配置文件里面删除 main storyboard file base name
2>在ViewController.m写如下代码
#import "AppDelegate.h"
#import "ViewController.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
//创建一个Window对象
//属于AppDelegate的属性
//UIScreen:表示屏幕硬件类
//mainScreen:获得主屏幕的信息
//当前手机屏幕的大小尺寸
self.window =[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
//创建视图控制器对像
ViewController *vcRoot = [[ViewController alloc] init];
//对窗口的根视图控制器进行赋值操作
//整个UIKit框架中只有一个根视图控制器,属于windowr的属性
//视图控制器用来管理界面和处理界面的逻辑类对象;
//程序启动前必须对根视图控制器赋值
self.window.rootViewController = vcRoot ;
//将Window做为主视图并显示出来
[self.window makeKeyAndVisible];
return YES;
}
UIViewController使用
1.UIViewController的创建2.UIViewController的生命周期高级
3.UIWiewController的界面切换
以ViewController.m文件里面加做一个视图在ViewCo02.m创建第个视图
----------------ViewController.m---------------------------------------------------
#import "ViewController.h"
#import "ViewCo02.h"
@interface ViewController ()
@end
@implementation ViewController
//当屏幕被点击时,调用此函数
-(void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//创建视图控制器二
ViewCo02 *vc = [[ViewCo02 alloc] init];
//显示一个新的视图控制器到屏幕上
//p1:新的视图控制器对象(对写VC)
//p2:使用动画切换效果
//p3:切换结束后功能调用,不需要传nil值即可
[self presentViewController:vc animated:YES completion:nil];
}
//第一次程序加载视图时调用
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.‘
self.view.backgroundColor = [UIColor blueColor];
NSLog(@"viewDidLoad!第一次加载视图!");
}
//当视图控制器的视图即将显示时,调用此函数
//视图分为:1.显示前(不显示) 2.正在处于显示状态 3.已经被隐藏()
//参数:表示是否用动画切换后显示
-(void) viewWillAppear:(BOOL)animated{
NSLog(@"viewWillAppear,视图即将显示");
}
//视图即将消失时,调用此函数
//参数:表示是否用动画切换后消失
//当前的状态:视图还是显示在屏幕上
-(void) viewWillDisappear:(BOOL)animated{
NSLog(@"视图即将消失!");
}
//当视图已经显示到屏幕后的瞬间调用此函数
//参数:表示是否动画切换显示
//当前状态已经显示到屏幕上了
-(void) viewDidAppear:(BOOL)animated{
NSLog(@"视图已经显示!");
}
//当前视图已经消失从屏幕上
//参数:表示是否用动画切换显示的
//当前状态当前视图控视图已经消失从屏幕上
-(void) viewDidDisappear:(BOOL)animated{
NSLog(@",视图已经消失!");
}
----------------ViewCo02.m--------------------------------------------------
创建ViewCo02继承 UIViewController
#import "ViewCo02.h"
@interface ViewCo02 ()
@end
@implementation ViewCo02
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//控制器二的颜色为橙色
self.view.backgroundColor = [UIColor orangeColor];
}
//点击当前控制器二的界面屏幕时反回到一
-(void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//使用前的控制器消失掉
//p1:是否有动画效果
//p2:结束后是否调用功能block块操作
[self dismissViewControllerAnimated:YES completion:nil];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
@end