IOS开发--视图控制器和基础视图

一、视图控制器

  UIViewController的介绍:

  UIViewController即视图控制器,它在MVC(Model View Controller)模式中充当控制者的角色,它负责控制视图的显示,以及响应用户在该视图中所有可能的动作。使用视图控制器,我们可以很方便的管理视图及其子视图。

  UIViewController的生命周期:

  运行APP--载入视图loadView--调用viewDidLoad方法--调用viewWillAppear方法--调用viewDidAppear方法--正常运行--视图从屏幕中移除(viewWillDisappear、viewDidDisappear)--视图被销毁(dealloc)

  上述方法包括如下几种,这些方法都是UIViewController类的方法:

  - (void)viewDidLoad;//视图已经加载完成

  一个APP在载入时会先通过loadView方法或者载入IB中创建的初始界面的方法,将视图载入到内存中。然后会调用viewDidLoad方法来进一步的设置。通常,我们对于各种初始数据的载入,初始设定等很多内容,都会在这个方法中实现,所以这个方法是一个很常用很重要的方法。

  注意:这个方法只会在一个控制器创建的时候调用一次,以后都不会再调用它了,所以只能用来做初始设置。

  - (void)didReceiveMemoryWarning;

  在内存足够的情况下,软件的视图通常会一直保存在内存中,但是如果内存不够,一些没有正在显示的viewcontroller就会收到内存不够的警告,然后就会释放自己拥有的视图,以达到释放内存的目的。但是系统只会释放内存,并不会释放对象的所有权,所以通常我们需要在这里将不需要在内存中保留的对象释放所有权,也就是将其指针置为nil.

  这个方法通常并不会在视图变换的时候被调用,而只会在系统退出或者收到内存警告的时候才会被调用。但是由于我们需要保证在收到内存警告的时候能够对其作出反应,所以这个方法通常我们都需要去实现。

  - (void)viewWillAppear:(BOOL)animated;

  系统在载入所有数据后,将会在屏幕上显示视图,这时会先调用这个方法。通常我们会利用这个方法,对即将显示的视图做进一步的设置。例如,我们可以利用这个方法来设置设备不同方向时该如何显示。

  另一方面,当APP有多个视图时,在视图间切换时,并不会再次载入viewDidLoad方法,所以如果在调入视图时,需要对数据做更新,就只能在这个方法内实现了。所以这个方法也很常用。

  - (void)viewDidAppear:(BOOL)animated;

  有时候,由于一些特殊的原因,我们不能在viewWillAppear方法里对视图进行更新,那么可以重写这个方法,在这里对正在显示的视图进行进一步的设置。

  - (void)viewWillDisappear:(BOOL)animated;

  在视图变换时,当前视图在即将被移除、或者被覆盖时,会调用这个方法进行一些善后的处理和设置。

  - (void)viewDidDisappear:(BOOL)animated;

  我们可以重写这个方法,对已经消失,或者被覆盖,或者已经隐藏了的视图做一些其他操作。

  - (void)dealloc;

  这个方法用于释放当前控制器中的实例对象。

  IB解释:IBAction中IB的全称为:Interface Builder。
  IB:是Mac OS
X平台下用于设计和测试用户界面的应用程序。IB能够使开发者简单快捷的开发出符合Mac OS X human-interface
guidelines的GUI。通常只需要通过简单的拖拽(drag-n-drop)操作来构建GUI就可以了。IB使用Nib文件储存GUI资源,同时
适用于Cocoa和Carbon程序。在需要的时候,Nib文件可以被快速地载入内存。

时间: 2024-10-28 22:15:59

IOS开发--视图控制器和基础视图的相关文章

iOS开发>学无止境 - Cell 里的视图控制器

在每个 iOS 开发者的生涯中,总有一些时候想把一个视图控制器放到一个 tableView 的 cell 中.因为这是一个有用的工具去处理我在视图控制器中的各种复杂视图及繁琐操作,而且很容易想象的一种情况是你想要将一些视图堆在另一些视图上面.另一个常见的应用场景是将 collectionView 放在 cell 里.理想情况下里面的 collectionView 拥有它自己的控制器,这样外面的 tableView 控制器不会受到关联视图和每个 collection view cell 数据的影响

ios – 视图控制器如何管理视图?

移动设备的屏幕有限,所有的东西都需要放到一个单一窗口组成的单一界面显示,在ios中体现为视图切换(在<ios – 视图>中已经说明了视图),当一个视图替换掉另一个视图的时候,会经常使用动画效果,这个任务就是交给视图管理器来完成的. ios5之后应用程序窗口有一个根视图控制器(rootViewController),当不为rootViewController赋值时,会出现"Application windows are expected to have a root view cont

IOS开发中UITableView(表视图)的性能优化及自定义Cell

IOS开发中UITableView(表视图)的滚动优化及自定义Cell IOS 开发中UITableView是非常常用的一个控件,我们平时在手机上看到的联系人列表,微信好友列表等都是通过UITableView实现的.UITableView这个控件中的列表的每一行是一个cell,当UITableView中cell数量特别大的时候,由于每次都需要alloc分配内存并初始化,会导致app运行不流畅,所以可以使用苹果提供的几个方法进行优化,我把这个过程记录下来供自己以后查阅. 当然,既然说到优化,那我们

iOS开发UI篇—Button基础

iOS开发UI篇—Button基础 一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状态 normal(普通状态) 默认情况(Default) 对应的枚举常量:UIControlStateNormal highlighted(高亮状态) 按钮被按下去的时候(手指还未松开) 对应的枚举常量:UIControlStateHighlighted disabled(失效状态,不可用状态) 如

IOS开发系列&mdash;Objective-C之基础概览

概览 前面我们已经用了几章内容进行C语言介绍,当然要通过几篇文章完整的介绍C语言的知识是不太现实的,例如C语言的文件操作.内存申请等我们都没有重点介绍,当然核心知识点基本都已经提到了,后面有时间我们会继续扩充.今天我们正式开始学习Objective-C,以后简称"ObjC",ObjC是在C语言的基础上加上了一层面向对象的特性,它完全兼容C语言,甚至可以混写C++.它是Mac OS X和IOS的主要开发语言,从IOS发布之后可以说ObjC的地位呈直线上升趋势,当前ObjC已经是仅次于C语

iOS开发指南 第7章 视图控制器与导航模式 学习

1 概述 分类:平铺导航模式 标签导航模式 树形导航模式 2 模态视图 必须要一个单独的模态视图控制器 呈现 代码方法:presentViewController:animated:completion: 故事板segue方式 关闭 dismissViewControllerAnimated:completion: 获取navigationBar:拖拽一个 Editor-Embed in-Navigation Controller 创建一个navigation controller interf

【转】 iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍)

原文: http://blog.csdn.net/hmt20130412/article/details/34523235 本来只是打算介绍一下addChildViewController这个方法的,正好今天朋友去换工作面试问到网易新闻标签栏效果的实现,就结合它,用个小Demo实例介绍一下:(具体解释都写在了Demo里面的注释) [objc] view plaincopy // //  HMTMainViewController.m //  UIScrollView // //  Created

iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍)

本来仅仅是打算介绍一下addChildViewController这种方法的,正好今天朋友去换工作面试问到网易新闻标签栏效果的实现,就结合它,用个小Demo实例介绍一下:(详细解释都写在了Demo里面的凝视) // // HMTMainViewController.m // UIScrollView // // Created by HMT on 14-6-25. // Copyright (c) 2014年 humingtao. All rights reserved. // #import

iOS 开发之头部滚动展示视图(转)

// //  RootViewController.m //  头部滚动展示视图 //  头部滚动广告视图 #define SCREEN_SIZE [UIScreen mainScreen].bounds.size #define KImageCnt 5 #define KImage_H  250 #import "RootViewController.h" @interface RootViewController ()<UIScrollViewDelegate> @pr