目录:

一、UICollectionViewController

二、UITabBarController(标签控制器)

三、视图和试图控制器的生命周期

四、其他控件

回到顶部

一、UICollectionViewController

1 概念:从ios6开始,是一个变异的TableViewController,可以将其认为是一个二维表视图。

2 布局特点:Flow Layout流式布局

3 和TableViewController比较:

TableViewController      CollectionViewController

section                        section

row                             item

cell                              cell

cell:UITableViewCell或子类cell:UICollectionViewCell

协议:

TableViewDatasource    CollectionViewDatasource

三问                             三问

TableViewDelegate      CollectionViewDeletate

一响应                          一响应

[1-CollectionViewController]

步骤:

1)创建MXCollectionViewController:UICollectionViewController(xib)

2)改变View的类型:

将xib中的view删除,在托一个UICollectionView,进行如下设置,将UICollectionView的datasource和delegate设置为Files Owner,将Files Owner中的view连线到UICollectionView

3)创建自定义的Cell类MXCell:UICollectionViewCell

4)创建自定义的cell的xib文件,托一个UICollectionViewCell到xib中,设置72X72加lablel控件

5)将Cell的xib文件的类型设置成MXCell,在将cell中的label拖成MXCell类的属性

6)设置UICollectionView的尺寸,每一个cell的大小,cell之间的间距,每一个section的内边距,以及CollectionView的头和脚高度

7)回答三问,多少区,每区多少个条目,每个条目的cell是什么样

回到顶部

二、UITabBarController(标签控制器)

1 控制器的控制器

2 创建

1)创建时经常需要先创建出要包含的多个继承自UIViewController的VC

2)用TabBarController包含这些VC

【2-tabBarController】

     UITabBarController *tab = [[UITabBarController alloc] init];

     MXFirstViewController *first = [[MXFirstViewController alloc] initWithNibName:@"MXFirstViewController" bundle:nil];

     MXSecondViewController *second = [[MXSecondViewController alloc] initWithNibName:@"MXSecondViewController" bundle:nil];

     MXThreeViewController *three = [[MXThreeViewController alloc] initWithNibName:@"MXThreeViewController" bundle:nil];

     tab.viewControllers = @[first,second,three];

     self.window.rootViewController = tab;

3)tabBar中的按钮title和image需要配置:

在具体的VC中设置属性:

self.title   设置标题(一般显示在navigation上)

self.tabBarItem.title  设置tabBar标题

self.tabBarItem.image  设置tabBar图片

注意:先设置title,在设置tabBarItem.title,图片必须设置

注意:如果属性设置在viewDidLoad中运行的时候,第二第三个view的属性会看不到,因为只有点击这些页面的时候才会加载viewDidLoad,所以这些属性需要在每个VC创建的时候设置,具体在- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil中设置。

 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

 {

     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

     if (self) {

         // Custom initialization

         self.tabBarItem.title = @"hellA";

         self.tabBarItem.image = [UIImage imageNamed:@""];

     }

     return self;

 }

3 tabBar和navigation一起使用

rootViewController是tabBar

【3-tabBar-naviga】

1)之间的关系:

     MXFirstViewController *first = [[MXFirstViewController alloc] initWithNibName:@"MXFirstViewController" bundle:nil];

     MXSecondViewController *second = [[MXSecondViewController alloc] initWithNibName:@"MXSecondViewController" bundle:nil];

     UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:first];

     UINavigationController *navi2 = [[UINavigationController alloc] initWithRootViewController:second];

     UITabBarController *tab = [[UITabBarController alloc] init];

     tab.viewControllers = @[navi,navi2];

     self.window.rootViewController = tab;

2)推新界面时,push时默认新界面会保留TabBar,如果不希望看见,在push之前可以设置隐藏,present推新界面时,新界面不会出现tabBar。

 - (void)viewDidLoad

 {

     [super viewDidLoad];

     self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(pushTap)];

     // Do any additional setup after loading the view from its nib.

 }

 - (void)pushTap{

     MXTableViewController *table = [[MXTableViewController alloc] initWithNibName:@"MXTableViewController" bundle:nil];

     table.hidesBottomBarWhenPushed = YES;//隐藏tabBar

     [self.navigationController pushViewController:table animated:YES];

 }

回到顶部

三、视图和试图控制器的生命周期

1 viewController对象本身的创建和销毁

1)创建

init  initWithXxx  initWithNibName(使用xib初始化)  initWithCoder(使用storyBoard初始化)

2)属性

私有属性@property(nonatomic,strong)NSMutableArray *data;一般会在init方法中创建此属性对应的对象。最好是在getter方法中创建,这样就只有需要使用此属性时才创建此对象(Lazy loading延迟加载)

公开属性一般是由外面赋值进来的,或是只读的。

3)释放

dealloc方法,在ARC下,此方法一般不太关注。

2 viewController对象的生命周期

1)视图创建(显示之前加载nib)

-> viewDidLoad      加载nib文件后调用,经常用于将数据赋值到显示界面的控件上

-> viewWillAppear     视图在显示之前调用,经常将更新界面的代码写在此处

2)视图可见

-> viewDidAppear     视图显示之后调用,当界面播放动画时用

-> viewWillDisappear    视图即将消失时调用

3)视图不可见

-> viewDidDisappear     视图消失后调用

如果在viewWillDisappear/ viewDidDisappear中分配某些资源,在这里释放这些资源

--------------特殊情况(了解)--------------

->didReceiveMemoryWarning系统内存低时调用

-> viewDidUnload 在ios6之后不再调用

【4-viewController-LifeCycle】

3 应用程序的生命周期

0)not running 非运行状态

1)前台foreground

inactive 前台非活动状态

active 活动状态

2)后台background

3)suspended挂起状态

【4-viewController-LifeCycle】

 // 应用启动时调用,初始化根视图控制器,在storyBoard中可能没有任何代码

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

 // 当程序从活动状态进入非活动状态时调用,比如有电话或短信进来,或用户按下home

 // 在这个方法中你可以暂停正在处理的任务,禁用计时器,OpenGL ES帧率停掉,如果是游戏,在此方法中暂停游戏的运行resignActive辞去活动状态

 - (void)applicationWillResignActive:(UIApplication *)application

 {

     NSLog(@"非活动状态");

 }

 // 释放一些共享资源,保存用户数据,将计时器设为无效,保存应用程序的状态信息,以便将来使用

 // 如果你的应用程序支持后台执行,当用户退出程序时会调用此方法enterBackground进入后台

 - (void)applicationDidEnterBackground:(UIApplication *)application

 {

     NSLog(@"进入后台");

 }

 // 将要进入前台时调用,从后台过度到非活动状态,可以撤销进入后台时的一些改变enterForeground进入前台

 - (void)applicationWillEnterForeground:(UIApplication *)application

 {

     NSLog(@"进入前台");

 }

 // 从非活动状态进入活动状态时调用,重新开始暂停的任务,如果应用程序是从后台进入的可以再次更新界面becomeActive变为活动

 - (void)applicationDidBecomeActive:(UIApplication *)application

 {

     NSLog(@"活动状态");

 }

 // 应用程序终止时调用,可以保存一些数据,terminate终止

 - (void)applicationWillTerminate:(UIApplication *)application

 {

     NSLog(@"终止程序");

 }

回到顶部

四、其他控件

UISegmentedControl(分割)、

UIActivityIndicatorView(转圈)、

UIProgressView(进度条)

 @property (weak, nonatomic) IBOutlet UIActivityIndicatorView *inditor;

 @property (weak, nonatomic) IBOutlet UIProgressView *progress;

 - (IBAction)segmenClick:(UISegmentedControl *)sender {

     NSInteger index = sender.selectedSegmentIndex;

     if (index == ) {

         [self.inditor stopAnimating];

         self.progress.progress = 0.2;

     }else if(index == ){

         [self.inditor startAnimating];

     }

     NSLog(@"%d",index);

 }

09-UIKit(UICollectionViewController、UITabBarController)的更多相关文章

  1. (转)Linux 系统性能分析工具图解读(一、二)

    Linux 系统性能分析工具图解读(一.二) 原文:http://oilbeater.com/linux/2014/09/08/linux-performance-tools.html 最近看了 Br ...

  2. C# 中使用不安全代码(unsafe、指针)实践

    命题 根据指定的字符集合(字典),按排列组合的规则(允许重复),生成指定长度的所有字符串.如下代码: class Program { static void Main(string[] args) { ...

  3. 【Java】流程控制 - 顺序结构、 选择(分支)结构(单分支、双分支、多分支、嵌套)、循环结构(for、while、do...while)、跳转语句(break、continue)

    流程控制语句结构 文章目录 流程控制语句结构 一. 顺序结构 1. 输出语句 2. 输入语句 3.code 二.复合语句 三. 分支结构 1. 条件判断 1.单分支结构 2.双分支结构 3.多分支结构 ...

  4. Java——搭建自己的RESTful API服务器(SpringBoot、Groovy)

    这又是一篇JavaWeb相关的博客,内容涉及: SpringBoot:微框架,提供快速构建服务的功能 SpringMVC:Struts的替代者 MyBatis:数据库操作库 Groovy:能与Java ...

  5. iOS 小谈开发者中的个人、组织(公司、企业)账号

    苹果对开发者主要分为3类:个人.组织(公司.企业).教育机构.即: 1.个人(Individual) 2.组织(Organizations) 组织类又分为2个小类: (1)公司(Company) (2 ...

  6. 那点你不知道的XHtml(Xml+Html)语法知识(DTD、XSD)

    什么是XHtml: 摘录网上的一句话,XHTML就是一个扮演着类似HTML的角色的XML. XHtml可当模板引擎应用: CYQ.Data 框架里有一套XHtmlAction模板引擎, 应用在QBlo ...

  7. Python开发:环境搭建(python3、PyCharm)

    Python开发:环境搭建(python3.PyCharm) python3版本安装 PyCharm使用(完全图解(最新经典))

  8. [UML]UML系列——类图class的关联关系(聚合、组合)

    关联的概念 关联用来表示两个或多个类的对象之间的结构关系,它在代码中表现为一个类以属性的形式包含对另一个类的一个或多个对象的应用. 程序演示:关联关系(code/assocation) 假设:一个公司 ...

  9. 联合体union和大小端(big-endian、little-endian)

    1.联合体union的基本特性——和struct的同与不同 union,中文名“联合体.共用体”,在某种程度上类似结构体struct的一种数据结构,共用体(union)和结构体(struct)同样可以 ...

随机推荐

  1. rman 使用catalog备份的演示

    介绍了如何使用catalog方式做RMAN备份,以及如何取消以catalog方式做备份. 第一步:创建RMAN CATALOG表空间及用户. [oracle@oel-01 ~]$ sqlplus / ...

  2. UC/0S2之中断

    中断是计算机系统处理异步事件的重要机制.当异步事件发生时,事件通常是通过硬件向cpu发出中断请求的.在一般情况下,cpu响应这个请求后会立即运行中断服务程序来处理该事件: 为了处理任务延时.任务调度等 ...

  3. VPN连接在遇到飞鱼星设备时可能出现的疑难问题

    在连接VPN设备时,设置都是正常的.在

  4. MySQL支持emoji

    方案1: 应用层支持 MySQL默认的数据库编码是utf8,对于emoji文字是不能直接存储的,要想存储emoji,有许多库支持对emoji的转换,例如将

  5. 修改项目工程名 iOS

    结合这两篇原文: http://www.cocoachina.com/ios/20150104/10824.html http://jingyan.baidu.com/article/0964eca2 ...

  6. centos6.5配置163的yum源

    CentOS系统自带的更新源的速度实在是慢,为了让CentOS6使用速度更快的YUM更新源,可以选择163(网易)的更新源. 1.下载repo文件 wget http://mirrors.163.co ...

  7. CSDN书籍下载

    http://download.csdn.net/user/vanridin/uploads/38 (2016英文书下载) http://download.csdn.net/user/ramissue ...

  8. HttpGet()和HttpPost()

    转 http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,P ...

  9. Windows Azure 社区新闻综述(#76 版)

    欢迎查看最新版本的每周综述,其中包含有关云计算和 Windows Azure 的社区推动新闻.内容和对话.以下是本周的亮点. 文章.视频和博客文章 ·   更新 Windows Azure 中的 SQ ...

  10. FastStone Capture(FSCapture) 注册码 _图形图像_软件教程_脚本之家

    FastStone Capture(FSCapture) 注册码 _图形图像_软件教程_脚本之家 FastStone Capture 注册码 序列号: name/用户名:TEAM JiOO key/注 ...