目标 : NavigationController导航的作用和使用
程序效果图如下 :
程序启动第一个 view 上面包含了一个 NavigationController 。为了区别视图界面,我们在第一个放了一个lable title为:rootView 第二个视图中 放了一个 lable title为two,
同时第一个视图中还放了一个 button 点击button 会跳入到第二个 视图中 ,并可以在 第二个视图中 点击 NavigationController 中的 root View(系统自动生成) 按钮 返回到 第一个视图中,这就是 NavigationController的作用。
NavigationController 是创建分层应用程序的主要工具,它在管理在管理以及换入,换出多个视图方面 和 TabBarController 比较类似,不同的地方是 NavigationController是作为栈(stack)来实现的。根视图控制器在堆栈最底层,接下来入栈的是General视图控制器和Auto-Lock视图控制器。可以调用 pushViewControllerAnimated:方法将视图控制器推入栈顶,也可以调用popViewControllerAnimated:方 法将视图控制器弹出堆栈 如下图:
此图摘自于互联网
UINavigationController的结构组成
看下图,UINavigationController有Navigation bar ,Navigation View ,Navigation toobar等组成。
此图摘自于互联网
下面我们使用控件来实现一次 :
为了让我更清楚的了解NavigationController的用法,我们创建一个空的 ios application 项目。
启动Xcode 工具 创建一个新的工程, ios-》application -》 empty application
填写工程信息 , 我这里项目名称起名为 : iphone_Sample_Navigation
class prefix 起名为 : Nav 下面复选框部分 全部 保持不选中状态,如下图:
点击 next 点击 选择保存位置 。
创建好 项目后, 开始步入正题 。
1: 首先创建一个 空的 xib 视图文件, 在视图文件中添加 一个UINavigationController
点击Xcode中的项目目录 ,右键 new file -》 ios -》User Interface -》 Empty 点击 next, 选择 Device family 为 iphone 点击next 填写文件名,为 ”NavigationViewContoller“ 其他保持默认。 点击创建 。
创建后 Xcode 为我们生成了 一个 NavigationViewContoller.xib 文件 , 点击 打开它 。我们发现 该 xib 视图文件中是空的 ,不用担心 我们拖一个Navigation Contoller组件进去,此视图将作为我们的根视图控制器,它在堆栈最底层的。
如图 :
2:和委托器建立连接。即使用委托器来管理我们的 NavigationController 在上图界面下打开 助理编辑器,把 NavigationController 组件以输出口(IBOutlet)的方式连接到 委托器的.h 文件中去。如图:
上图中 红色 框框标示的部分为 建立连接后的 输出口。 并在委托器的 .m 文件中 生成相应的声明管理方法。
3: 打开我们的委托器。(这里为:NavAppDelegate.m)初始化 NavigationController 对象,并添加到委托中的view 中,这时 NavigationController 对象成为我们的根视图控制器对象了。 代码如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
[[NSBundle mainBundle]loadNibNamed:@"NavigationViewContoller" owner:self options:nil];
[self.window addSubview:self.naviGationController.view];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
上面代码中,蓝色代码部分 为核心代码 。
启动我们的 模拟器, 运行程序,就可以看到我们的 NavigationController视图界面了。
细心的童鞋 发现 怎么我们的NavigationController 的 头部没有标题呢。 呵呵是的,我们还没设置标题了 ,打开xib视图界面,依次展开左侧Objects栏目中的 NavigationController 选中 Navigation ltem 对象,打开我们的属性检查器,就会看到我们的 title 属性了(如下图), 设置它就可以看到 NavigationController 的头部标题了, 赶快去试试吧。
接着 我们来试试多视图跳转。 我们需要在创建一个 视图 controller , 选中Xcode中的项目目录 右键 -》 new file -》Cocoa Touch -》Objective -C class 创建一个 带xib的controller 这里命名为 :NavTwoViewController 继承至 UIViewController 并选中 With XIB for user interface 复选框 创建。
打开 NavTwoViewControlle,xib 文件,在这个文件我们只需要放个 label 来标示为第二个视图界面即可
保存并关闭。
继续打开我们NavigationViewContoller.xib 视图界面 为我们的视图界面拖放一个Button按钮。并给它设置个title属性,同样点开属性检查器,在属性检查器,有title 属性,这个按钮的作用是 ,点击它 跳到我们刚刚创建的 view
拖放好button 后 需要为 改连接创建一个 动作连接, 还在在这个视图界面下,打开助理编辑器,把这个button 以Action 方式连接到 委托器的 头文件中,注意:Connect: 需要选择为Action 如下图 :
上图中为 连接后成功后的界面, 此时在委托器的.m 文件中也会为我们生成这个方法,我们实现这个方法,来实现跳转 。代码如下 :
- (IBAction)gotoView:(id)sender {
NavTwoViewController *root=[[NavTwoViewController alloc]initWithNibName:@"NavTwoViewController" bundle:nil];
root.title=@"two view";
[self.naviGationController pushViewController:root animated:YES];
}
要在 委托器类(NavAppDelegate.m)中使用 NavTwoViewController 对象 还需要在 委托器的 开始引入这个类,代码如下(蓝色部分):
#import "NavAppDelegate.h"
#import "NavTwoViewController.h"
@implementation NavAppDelegate
保存 运行 即可 , root.title=@"two view"; 为第二个界面设置 导航title
×××地址 :
http://blog.51cto.com/ext/down_att.php?aid=36077&code=1352