目标 : 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

×××地址 :

https://blog.51cto.com/ext/down_att.php?aid=36077&code=1352