UIViewController 视图控制器

作用:

?创建和管理视图。

?管理视图上显示的数据。

?设备方向变化,调整视图大小以适应屏幕。

?负责视图和模型之间的数据及请示的传递。

当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序:

1、 alloc                 创建对象,分配空间
2、init (initWithNibName) 初始化对象,初始化数据
3、loadView               从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图
4、viewDidLoad            载入完成,可以进行自定义数据以及动态创建其他控件
5、viewWillAppear         视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
6、viewDidAppear          视图已在屏幕上渲染完成

当一个视图被移除屏幕并且销毁的时候的执行顺序,这个顺序差不多和上面的相反
1、viewWillDisappear   视图将被从屏幕上移除之前执行
2、viewDidDisappea 视图已经被从屏幕上移除,用户看不到这个视图了
3、dealloc       视图被销毁,此处需要对你在init和viewDidLoad中创建的对象进行释放

1.创建一个根视图

原代码:
 创建一个属性:@property(nonatomic ,retain)RootViewController *rootVC;
 1.创建一个rootViewController对象
    _rootVC =[[RootViewController alloc] init];
 2.给indow设置根视图控制器
    _window.rootViewController = _rootVC;
    [_rootVC release];

2.创建一个RootViewController的类,引入头文件

3.ViewController的初始化

vc的初始化方法,这个方法一般自己就会调用了,不需要我们再额外的去调用,会初始化一些容器,比如数组,字典

原代码:
-(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
    self =[super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.arr = [NSMutableArray array];
    }
    //打印方法名
    NSLog(@"%s", __FUNCTION__);
    return self;
}

4. 第一次使用view属性时候使用 ,创建view

原代码:
-(void)loadView{
    // super调用父类
    [super loadView];
    NSLog(@"%s", __FUNCTION__);
    // self.view 的加载
}

如果想重写父类的方法,首先要先用super去调用父类的方法,这样可以保证原功能不变,然后在方法里再写新的功能

5.视图的创建和辅设都在viewdidload方法里进行

原代码:
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor =[UIColor yellowColor];
    NSLog(@"%s", __FUNCTION__);
    for (int i =1; i<4; i++) {
        UITextField *textFieldi =[[UITextField alloc] initWithFrame:CGRectMake(100, 100+100*i, 150, 40)];
        textFieldi.delegate =self;
        textFieldi.layer.borderWidth =2;
        textFieldi.layer.cornerRadius =10;
        [self.view addSubview:textFieldi];
        [textFieldi release];
    }
      // 辅一个button
    UIButton *button =[UIButton buttonWithType:UIButtonTypeSystem];
    button.frame =CGRectMake(100, 500, 150, 40);
    [button setTitle:@"下一页" forState:UIControlStateNormal];
    [button setTintColor:[UIColor blackColor]];
    [self.view addSubview:button];
    [button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
    button.layer.borderWidth =2;
    button.layer.cornerRadius =10;
}

6. 视图将要出现

原代码:

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    NSLog(@"%s", __FUNCTION__);
}

7.试图将要消失

原代码:

-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    NSLog(@"%s", __FUNCTION__);
}

8.视图已经消失

原代码:

-(void)viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];
    NSLog(@"%s", __FUNCTION__);
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-11 12:27:56

UIViewController 视图控制器的相关文章

iOS之浅谈纯代码控制UIViewController视图控制器跳转界面的几种方法

一.最普通的视图控制器UIViewContoller 一个普通的视图控制器一般只有模态跳转的功能(ipad我不了解除外,这里只说iPhone),这个方法是所有视图控制器对象都可以用的,而实现这种功能,有两种方法. 1.通过方法 - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion跳转 相

UI 03 UIViewController (视图控制器)的7个方法与视图的跳转

新建一个继承于UIViewController 的类 在AppDelegate.m 中写如下代码. //1.创建一个rootViewController对象 RootViewController *rootVC = [[RootViewController alloc]init]; //2.给window设置根视图控制器 self.window.rootViewController = rootVC; [rootVC release]; 在RootViewController.m文件中的代码如下

UI第三讲.自定义视图 视图控制器指定自定义view 检测屏幕旋转 处理内存警告 容器视图控制器

一.自定义视图 (自定义label-textField视图) 目的:为了进一步优化登录界面,提高代码的精简程度和复用性,可移植性,从而需要在原有视图控件的基础之上自由组合成自定义视图. 一般自定义的视图会继承于UIView.以下是自定义视图的要点和步骤: 1.创建一个UIView子类 2.在类的初始化方法中添加子视图 3.类的.h文件提供一些接口(方法),便于外界操作子视图. 例子及相应代码: 例题:假设我们使用LTView类代表label-textfield视图.创建一个LTView类继承于U

UI基础:视图控制器.屏幕旋转.MVC

UIViewController 视图控制器,继承自UIResponder,作用:管理视图并且响应事件 功能: 1.分担APPdelegate的工作 2.实现模块独立,能提高复用性 创建UIViewController对象: UIViewController *viewController=[[UIViewController alloc]init]; UIViewController 自身带了一个UiView,默认的大小和屏幕大小一样. 每一个window都带有一个根视图,如果不给根视图赋值,

[IOS_UI控件]iPhone应用开发之一:窗口,视图,视图控制器和UIKit基础

1.窗口:UIWindow iPhone的规则是一个窗口,多个视图,窗口是你在app显示出来你看到的最底层,他是固定不变的,基本上可以不怎么理会,但要知道每层是怎样的架构. 2.视图:UIView UIView是用户构建界面的基础,所有的控件都是在这个页面上画出来的,你可以把它当成是一个画布,你可以通过UIView增加控件,并利用控件和用户进行交互和传递数据. 窗口和视图是最基本的类,创建任何类型的用户界面都要用到.窗口表示屏幕上的一个几何区域,而视图类则用其自身的功能画出不同的控件,如导航栏,

[转]iOS开发之视图控制器(UIViewController)

视图控制器应该在MVC设计模式中扮演控制层(C)的角色,UIViewController的职责对内管理与之关联的View,对外跟其他UIViewController通信和协调.一个视图控制器管理一个视图(它可以有子视图),其view属性指向它所管理的视图.UIViewController类可以有子类,可以使用一个系统的UIViewController子类或者直接自己创建一个UIViewController的子类. 使用代码创建控制器和视图. 开始创建一个基于窗口的Empty Applicatio

iOS狂暴之路---视图控制器(UIViewController)使用详解

一.前言 在之前的一片文章中已经介绍了 从iOS的第一个应用中能学习到哪些知识点 在那篇文章中主要介绍了一个iOS程序的启动过程和应用的几大对象,以及应用的生命周期,同时也介绍了应用中的控制器知识点,介绍了其生命周期方法,那么对于一个iOS应用一般都是会包含多个页面,而每个页面就是一个控制器,一个控制器一般都是关系到一个UIView的,但是我们在真正使用这些控制器的时候会发现,多个页面之间的跳转关系该如何控制.在之前的文章知道一个应用对应一个窗口对象UIWindow,每个窗口都有一个根控制器对象

iOS开发之视图控制器(UIViewController)

视图控制器应该在MVC设计模式中扮演控制层(C)的角色,UIViewController的职责对内管理与之关联的View,对外跟其他UIViewController通信和协调.一个视图控制器管理一个视图(它可以有子视图),其view属性指向它所管理的视图.UIViewController类可以有子类,可以使用一个系统的UIViewController子类或者直接自己创建一个UIViewController的子类. 使用代码创建控制器和视图. 开始创建一个基于窗口的Empty Applicatio

UI 多个视图控制器(UIViewController)间的 协议传值

1 #import <UIKit/UIKit.h> 2 3 4 5 //1.协议传值 6 7 // 协议由后面的视图控制器制定 8 9 @protocol secondDelegate <NSObject> 10 11 12 13 //协议的方法需要带一个或多个参数 14 15 - (void)passValueWithString:(NSString *)string; 16 17 18 19 @end 20 21 22 23 @interface secondViewContr