常见的视图控制器
-UIViewController
UIViewController是视图控制器的父类,其他的视图控制器类都继承它。每个视图控制器都有一个单独的主视图,这是它独有的视图,用view属性来表示。
-UINavigationController
UINavigationController允许在树状视图层次结构间上下导航。它维护一个视图控制器的栈,任何类型的视图控制器都可以放入栈中。压栈只能一个个压,弹栈可以一起弹,也可以一个个弹。
关于栈的原理是:先进后出。所有的视图控制器都可以压进栈内。过程:压栈->出栈
-UITabBarController
当应用程序需要用许多不同的交互模式或者不同的方式来查看相同的数据时,我们就可以考虑使用标签栏。优点:不用复杂的界面跳转
标签栏的默认数量是5个
-UITableViewController
UITableViewController-表格视图控制器简化了iPhone项目中的表视图的使用。它提供了一个标准的已连接UITableView实例并自动将委托和数据源设为指向自己,只需提供这些委托和数据源方法,用数据填充表格并响应用户单击即可。
-地址簿控制器
地址簿用户界面框架提供了几个视图控制器,允许从地址簿中选择某个人,查看他的详细信息并添加新联系人或修改现有联系人条目。
-UIImagePickerController
图像选取器界面是通过名为UIImagePickerController的模式控制器类执行的。
-邮件撰写
MFMailComposeViewController允许创建用户可以直接在程序中定制邮件消息。
-GKPeerPickerController
尽管该控制器是GameKit的一部分,但其技术也很适合用于非游戏用途,比如文件传输、消息传递等。
-Media Player控制器
Media Player框架提供了几个控制器,允许选择和播放音乐、电影。
关于栈的原理是:先进后出。所有的视图控制器都可以压进栈内。过程:压栈->出栈
视图控制器的作用
1、视图控制器的主要职责
(1)管理其视图的显示,对事件作出响应,例如,iPhone显示方向或内存情况等事件。
(2)充当用户界面和应用程序数据模型之间的协调者(后面我们将详细介绍iOS中的MVC模式)。
2、介绍几个使用视图控制器时必须了解的函数:
(1)loadView
可以把初始化工作写在里面,
loadView和nib文件不能共存,现在已经不用
(2)viewdidLoad、memory
(3)viewDidUnload
(4)viewWillAppear
在视图将要显示时,会调用这个方法
(5)viewDidAppear
(6)viewWillDisappear
(7)viewDidDisappear
(8)内存警告
3、响应方向变化
当iPhone旋转的时候,立即调用shouldAutorotateToInterfaceOrientation:方法
4、处理底内存情况
当一个视图没有父视图或当发布一条内存警告的时候,每个视图控制器通过didReceiveMemoryWarning方法收到一条通知。
一、导航控制器
1、使用导航控制器
(1)为按钮添加事件,响应一个自定义方法,代码如下:
//在.h中声明一个方法
-(IBAction)pressToNextPage:(id)sender;
// 在.m文件中实现这个方法
-(IBAction)pressToNextPage:(id)sender
{
//创建SecondViewController实例对象
SecondViewController *secondVC=
[[[SecondViewController
alloc] init] autorelease];
//设置该视图的标题
secondVC.title = @"第二页";
//将实例对象secondVC压入导航控制栈中
[self.navigationController
pushViewController:secondVC
animated:YES];
}
2、使用导航控制器
(1)、压入导航栈中代码如下:
[self.navigationController
pushViewController:视图实例对象
animated:YES];
二、标签视图控制器
1、使用标签控制器
(1)我们可以使用UITabBarController类来创建多页的界面。通过从位于屏幕底部的一个标签页栏选择一个标签页来显示页面。
(2)标签栏控制器的每个页面都是一个视图控制器。