视图控制器特点
//1,抽象  视觉上没有效果
//2,负责控制视图的显示方式
//3,负责通知视图的显示内容
//4,ios平台赋予的,收到内存警告和检测设备旋转
@interface CHViewController : UIViewController
//@property(nonatomic,retain)UIView *view;
//当使用访问器访问该视图控制器的根视图时,如果该视图控制器的根视图为空(没有使用设置器进行赋值过..),那么该视图控制器对象会自动收到消息-loadView..[view loadView],否则会直接返回该视图控制器的根视图...;
@end

//新建的视图控制器一定是继承于UIViewController的,或者是他的子类...
//因为这是一个视图控制器
-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    //一定要对super对象发送消息,目的是为了调用父类的实现方法
    if (self= [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])
    {
        //新建类的自定义初始化方法..
        self.title=@"haha";
    }
    //返回初始化结果
    return self;
}
-(void)dealloc
{
      mutableArray=nil;
    self.title=nil;
}
-(void)loadView
{
    NSLog(@"%s",__FUNCTION__);
    [super loadView];//父视图加载之后,view就不会是空了
    NSLog(@"%@",self.view);//如果view为空就会执行loadView.如果view为空就会陷入死循环
//[super loadView];
}
//根视图完成加载
- (void)viewDidLoad
{
     NSLog(@"%s",__FUNCTION__);
    [super viewDidLoad];
    mutableArray=[NSMutableArray new];
    // Do any additional setup after loading the view, typically from a nib.
}

//控制器实例对象收到内存警告...
//当控制器实例对象收到内存警告时,控制器实例对象会自动对自身的根视图赋值为空,相当于执行了self.view=nil;
- (void)didReceiveMemoryWarning//自动将根视图赋值为空,为了释放内存//但是特殊情况是视图正在显示的时候就不会赋值为空
{
     NSLog(@"%s",__FUNCTION__);
    [super didReceiveMemoryWarning];
     mutableArray =nil;
    // Dispose of any resources that can be recreated.
}
//////////////////////////以上为第一层循环

//以下为第二层循环
-(void)viewWillAppear:(BOOL)animated
{
    NSLog(@"----------%s",__FUNCTION__);
    [super viewWillAppear:animated];
}
-(void)viewDidAppear:(BOOL)animated
{
 NSLog(@"%s",__FUNCTION__);
    [super viewDidAppear:animated];
}
-(void)viewWillDisappear:(BOOL)animated
{
 NSLog(@"%s",__FUNCTION__);
    [super viewWillDisappear:animated];
}
-(void)viewDidDisappear:(BOOL)animated
{
 NSLog(@"%s",__FUNCTION__);
    [super viewDidDisappear:animated];
}
@end

视图功能:显示视图控制器通知它显示的内容,ios赋予它响应用户交互,承载动画

每个view都有一个tag属性.

[self.view viewWithtag:int];tag默认都为0.

UIWindow是self.view的父view.

多态就是多种状态

步步入佳境---UI入门(3) --单视图控制器的更多相关文章

  1. 步步入佳境---UI入门(1)--项目建立与实现

    一,本文讲解建立一个空项目,怎么一步一步的创建程序,总体的感觉一下程序流程  1,首先建立一个项目,如下:single view project,我们首先删除CHAppDelegate文件和Main. ...

  2. 步步入佳境---UI入门(2)

    一,刚开始练习UI的时候,一般是在- (void)viewDidLoad方法中写代码测试,例如:- (void)viewDidLoad{    CGRect rect=CGRectMake(0, 0, ...

  3. 步步入佳境---UI入门(4) --简单练习

    一,创建SingleViewApplication 1,UILabel的简单使用 UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(0, ...

  4. UI 07 _ 导航视图控制器 与 属性传值

    首先, 先创建三个VC. 完毕点击按钮, 进入下一页, 并可以返回. 要先把导航视图控制器创建出来. 在AppDelegate.m 文件里代码例如以下: #import "AppDelega ...

  5. Snail—UI学习之导航视图控制器UINavigationController(系统)

    背景 有一个根视图控制器 然后跳转到第一个界面  第一个界面能够返回到根视图 也能够跳转到第二个视图 第二个视图能够直接返回到根视图 新建三个ViewController    RootViewCon ...

  6. ##DAY3 自定义视图、视图控制器、视图控制器指定视图、loadView、 viewDidLoad、MVC、屏幕旋转、内存警告

    ##DAY3 自定义视图.视图控制器.视图控制器指定视图.loadView. viewDidLoad.MVC.屏幕旋转.内存警告 #pragma mark ———————自定义视图的步骤 —————— ...

  7. UI入门指引

    1. iOS学习路线: C语言:数据类型.流程控制.函数.指针.字符串.结构体.枚举.预处理: OC:面向对象.内存管理.分类.协议.Block.KVC/KVO.Foundation框架: iOS基础 ...

  8. jQuery UI 入门之实用实例分享

    jQuery UI 入门 jQuery UI 简介 jQuery UI 是一个建立在 jQuery JavaScript 库上的小部件和交互库,您可以使用它创建高度交互的 Web 应用程序.无论您是创 ...

  9. jQuery UI 入门之实用实例

    jQuery UI 入门 jQuery UI 简介 jQuery UI 是一个建立在 jQuery JavaScript 库上的小部件和交互库,您可以使用它创建高度交互的 Web 应用程序.无论您是创 ...

随机推荐

  1. hdu----(1257)最少拦截系统(dp/LIS)

    最少拦截系统 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  2. ARM流水线关键技术分析与代码优化

    引 言    流水线技术通 过多个功能部件并行工作来缩短程序执行时间,提高处理器核的效率和吞吐率,从而成为微处理器设计中最为重要的技术之一.ARM7处理器核使用了典型三级流 水线的冯·诺伊曼结构,AR ...

  3. IO流--流转换

    import java.io.*; //键盘读入 字节流转换成字符流操作 提高效率 public class io { public static void main(String[] args) t ...

  4. PowerDesigner中导出设计说明文档

    点击下图的新建按钮,新建一个导出内容的模板 模板设计界面分为2栏,左边是可选的模板内容,右侧是模板,双击左侧条目会添加到右侧,最后生成的文件中就有此项内容. 已经添加到右侧的内容可以编辑,双击右侧的条 ...

  5. 【转】用PowerDesigner对现有的数据库反向工程建立E-R图

    转自:http://www.cnblogs.com/oceanshare/archive/2010/02/10/1667071.html 由于早期的一个项目在数据库设计建立时没有输出为E-R图,偶在对 ...

  6. EF 7 Code First

    加载方式三种 1. Eager Loading 2. Lazy Loading 3.Explicit Loading 使用EF在与关系型数据库的交互中不可避免地需要加载数据,如何加载数据变得至关重要. ...

  7. Axis2 webservice入门--写个简单的webservice

    上一篇介绍了webservice开发前的准备.下面开始写webservice.如果不了解axis2请看上一篇,如果是新手:建议一边看一边写代码,自己动手完成这个过程. 一.新建一个web项目 二.新建 ...

  8. qml android 的一个例子qtHangMan

    这个例子有2个好处: 1.解决了黑屏问题 2.演示了应用内购买的问题

  9. MySQL存储过程之事务管理

    原文链接:http://hideto.iteye.com/blog/195275 MySQL存储过程之事务管理 ACID:Atomic.Consistent.Isolated.Durable 存储程序 ...

  10. 其他窗体赋值给comboBox实现值的回显,并使赋的值处于选中状态(根据text获取selectedindex)

    Form1 发货单位的这个下拉框comboBox1已经绑定数据库test表的name字段,里面有很多单位名称 比如有:甲公司.乙公司... 1.Form1的comboBox1首先绑定数据库的数据表te ...