步步入佳境---UI入门(3) --单视图控制器
视图控制器特点
//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) --单视图控制器的更多相关文章
- 步步入佳境---UI入门(1)--项目建立与实现
一,本文讲解建立一个空项目,怎么一步一步的创建程序,总体的感觉一下程序流程 1,首先建立一个项目,如下:single view project,我们首先删除CHAppDelegate文件和Main. ...
- 步步入佳境---UI入门(2)
一,刚开始练习UI的时候,一般是在- (void)viewDidLoad方法中写代码测试,例如:- (void)viewDidLoad{ CGRect rect=CGRectMake(0, 0, ...
- 步步入佳境---UI入门(4) --简单练习
一,创建SingleViewApplication 1,UILabel的简单使用 UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(0, ...
- UI 07 _ 导航视图控制器 与 属性传值
首先, 先创建三个VC. 完毕点击按钮, 进入下一页, 并可以返回. 要先把导航视图控制器创建出来. 在AppDelegate.m 文件里代码例如以下: #import "AppDelega ...
- Snail—UI学习之导航视图控制器UINavigationController(系统)
背景 有一个根视图控制器 然后跳转到第一个界面 第一个界面能够返回到根视图 也能够跳转到第二个视图 第二个视图能够直接返回到根视图 新建三个ViewController RootViewCon ...
- ##DAY3 自定义视图、视图控制器、视图控制器指定视图、loadView、 viewDidLoad、MVC、屏幕旋转、内存警告
##DAY3 自定义视图.视图控制器.视图控制器指定视图.loadView. viewDidLoad.MVC.屏幕旋转.内存警告 #pragma mark ———————自定义视图的步骤 —————— ...
- UI入门指引
1. iOS学习路线: C语言:数据类型.流程控制.函数.指针.字符串.结构体.枚举.预处理: OC:面向对象.内存管理.分类.协议.Block.KVC/KVO.Foundation框架: iOS基础 ...
- jQuery UI 入门之实用实例分享
jQuery UI 入门 jQuery UI 简介 jQuery UI 是一个建立在 jQuery JavaScript 库上的小部件和交互库,您可以使用它创建高度交互的 Web 应用程序.无论您是创 ...
- jQuery UI 入门之实用实例
jQuery UI 入门 jQuery UI 简介 jQuery UI 是一个建立在 jQuery JavaScript 库上的小部件和交互库,您可以使用它创建高度交互的 Web 应用程序.无论您是创 ...
随机推荐
- hdu 4034 Graph (floyd的深入理解)
Graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others)Total Submi ...
- System.OutOfMemoryException: 内存不足。(转)
主要是网站生成水印图片的时候遇到的 原文地址:http://www.cnblogs.com/longgel/archive/2010/03/24/1693776.html 今天调试asp.net 程序 ...
- SqlServer中把结果集放到到临时表的方法
一. SELECT INTO 1. 使用select into会自动生成临时表,不需要事先创建 select * into #temp from sysobjects 01. 把存储过程结 ...
- Java多线程-新特征-锁(下)
在上文中提到了Lock接口以及对象,使用它,很优雅的控制了竞争资源的安全访问,但是这种锁不区分读写,称这种锁为普通锁.为了提高性能,Java提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控 ...
- PHP超级全局变量——Session 变量
PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置.Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用. PHP Session 变量 当您运行一个 ...
- Linux下smba服务端的搭建和客户端的使用
解决了 windows下用root登录linuxsamba后有部分目录访问无权限的问题.应该是SELinux 设置问题. 对selinux进行修改,一般为终止这项服务,操作如下: 查看SELinux状 ...
- 两段超简单jquery代码解决iframe自适应高度问题(不用判断浏览器高度)
这里介绍两个超级简单的方法,不用写什么判断浏览器高度.宽度啥的.下面的两种方法自选其一就行了.一个是放在和iframe同页面的,一个是放在test.html页面的.注意别放错了地方.iframe的代码 ...
- 使用Join代替In
我们知道,在sql中使用IN让我们的where子句可以规定多个值.当需要从一个集合中查询包含某几个值的记录的时候,通常我们会选择使用IN来实现,其实,使用JOIN也可以实现这样的功能,而且性能要比IN ...
- jdk和tomcat环境部署
部署前需要准备的东西: 1.确定操作系统(32位或64位) 2.准备对应的jdk和tomcat软件 3.准备一份环境变量配置说明,省的到时候忘记了 步骤: 1.安装JDK 安装好JDK后,再配置JDK ...
- 表单form的属性,单行文本框、密码框、单选多选按钮
基础表单结构: <body> <h1> <hr /> <form action="" name="myFrom" en ...