一、UINavigationController导航控制器,通过栈来完成全部页面的导航,UINavigationController有Navigation bar、Navigation View,Navigation toolbar组成。

1、下面演示通过UINavigationController完成IOS页面的导航,首先新建一个Empty工程,工程名称为MyNavigationControllerDemo,然后在添加一个类,名称为MainViewController,创建的时候勾选With XIB for user interface,然后打开AppDelegate.m页面在,将里面的代码修改如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];// Override point for customization after application launch.self.window.backgroundColor = [UIColor whiteColor];//刚才创建的主窗体,首页加载显示的内容MainViewController *viewcontroller=[[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];viewcontroller.title=@"主页面";//标题的名称,在进入下一个页面时,返回的button上面显示的问题UINavigationController *navcontroller=[[UINavigationController alloc] init];//创建UINavigationController[navcontroller pushViewController:viewcontroller animated:YES];//将主页面push到栈里面[self.window addSubview:navcontroller.view];//将navigationcontroller添加到主页面[self.window makeKeyAndVisible];[viewcontroller release];return YES;
}

2、添加UIBarButtonItem,barButtonItem分为左右两个,我们现在将左右两个的barButtonItem添加上,在MainViewController.m的viewDidLoad里面分别添加如下代码:

- (void)viewDidLoad
{[super viewDidLoad];// Do any additional setup after loading the view from its nib.//使用系统自带的,也可以使用自定义的button,label等,后面我们会讲解自定义的Button,Label显示在上面UIBarButtonItem *leftbtn=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self action:@selector(SaveBookMark:)];self.navigationItem.leftBarButtonItem=leftbtn;UIBarButtonItem *rightbtn=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(BtnSearch:)];self.navigationItem.rightBarButtonItem=rightbtn;self.navigationItem.title=@"欢迎";//设置了这个,前面设置viewcontroller.title不起作用,这个地方的title我们也可以设置为button,label等,使用    //self.navigationItem.titleView,在下一个页面,如果没有定义bar left NavigationItem,显示的文字就是这个,注,只识别title,titleView不识别

。
}

然后定义两个方法,用来相应左右的点击事件,代码如下:

-(void)SaveBookMark:(id)sender{NSLog(@"你点击了导航栏左侧的按钮");
}
-(void)BtnSearch:(id)sender{NSLog(@"你点击了导航栏右侧的按钮");
}

运行以后界面显示如下,

点击左右两个的按钮,可以执行相应的事件。

左右两边的图标,我们是使用的系统图标,图标主要有如下:

二、页面跳转

在MainViewController.xib页面放一个Button,在MainViewController.h里面定义一个方法,代码如下:

#import <UIKit/UIKit.h>@interface MainViewController : UIViewController-(IBAction)BtnViewProduct:(UIButton *)sender;@end

让后将其绑定到刚才添加的button点击事件中,截图如下:

选择 Touch Up Inside,同学修改button的名称为产品列表,

我们新建一个产品列表类,在创建的时候选中With xib for user interface,名称为ProductListViewController,在View上面放一个Label,修改名称为"产品列表页面",现在我们来实现点击MainViewController.xib上面的"查看产品列表”Button,跳转到产品列表页面,刚才我们已经给其绑定了一个点击事件,接下来我们去实现此事件,在MainViewController.m中实现 -(void)BtnViewProduct:(UIButton *)sender;实现代码如下:

-(void)BtnViewProduct:(UIButton *)sender{ProductListViewController *viewcontroller=[[ProductListViewController alloc] init];viewcontroller.title=@"列表";//跳转到下一个页面线的标题,如在下一个页面我们单独设置了标题则此标题不其作用。[self.navigationController pushViewController:viewcontroller animated:YES];[viewcontroller release];
}

点击跳转以后界面显示如下:

在此页面我们重新定义定义左右两个的barButtonItem,首先我们在程序中添加两张图片,一个为返回的图片,一张是进入主页面图标,在ProductListViewController.m的

- (void)viewDidLoad我们定义左右两个barButtonItem,并且设置标题,viewDidLoad代码如下:

- (void)viewDidLoad
{[super viewDidLoad];// Do any additional setup after loading the view from its nib.//设置所按钮//设置左边的barUIButton *backbutton=[UIButton buttonWithType:UIButtonTypeCustom];backbutton.frame=CGRectMake(0, 0, 50, 25);[backbutton setBackgroundImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal];//定义点击事件[backbutton addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside];UIBarButtonItem *leftitem=[[UIBarButtonItem alloc] initWithCustomView:backbutton];[self.navigationItem setLeftBarButtonItem:leftitem animated:YES];[leftitem release];//设置右边的barUIButton *mainbutton=[UIButton buttonWithType:UIButtonTypeCustom];mainbutton.frame=CGRectMake(0, 0, 50, 25);[mainbutton setBackgroundImage:[UIImage imageNamed:@"top_bar_home"] forState:UIControlStateNormal];[mainbutton addTarget:self action:@selector(BtnMain:) forControlEvents:UIControlEventTouchUpInside];//定义点击事件UIBarButtonItem *rightitem=[[UIBarButtonItem alloc] initWithCustomView:mainbutton];[self.navigationItem setRightBarButtonItem:rightitem animated:YES];[rightitem release];//设置标题UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 80, 25)];label.text=@"产品列表";[label setBackgroundColor:[UIColor clearColor]];label.textColor=[UIColor whiteColor];self.navigationItem.titleView=label;//或者//[[self navigationItem] setTitleView:label];//[self.navigationItem setTitleView:label];//self.navigationController.title=@"产品列表页";//从下一页返回的时候显示这个[label release];//self.navigationItem.title=@"产品列表页";//进入下一页以后,返回上面显示的文字//[self.navigationController.navigationBar setBackgroundImage:[self scaleToSize:[UIImage imageNamed:@"top_bar_bg"] size:CGSizeMake(320, 44)] forBarMetrics:UIBarMetricsDefault];//设置navigationbar的背景图片}

然后定义一个左右两个bar item的点击事件。

-(void)back:(UIButton *)sender{[self.navigationController popViewControllerAnimated:YES];//返回到上一个页面
}
-(void)BtnMain:(UIButton *)sender{MainViewController *viewcontroller=[[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];[self.navigationController popToRootViewControllerAnimated:YES];//进入主页面[viewcontroller release];
}

最终产品列表界面显示如下图

例子代码:http://download.csdn.net/detail/u011872945/6611727

IOS navigationController详解相关推荐

  1. FreeEIM 来点新知识iOS UIScrollView详解

     老程序员FreeEIM 来点新知识iOS UIScrollView详解 UIScrollView 顾名思义也知道这个是和滚动相关的控件,在Android开发时遇到过ScrollView,当内容的 ...

  2. iOS绘图详解-多种绘图方式、裁剪、滤镜、移动、CTM

    iOS绘图详解 摘要: Core Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎.它提供了低级别.轻量级.高保真度的2D渲染.该框架可以用于基于路径的 绘 ...

  3. IOS UIView详解

    文章目录 IOS UIView详解 1.官方类分析 2. UIView 常用的属性 2.1 UIView的圆角加阴影效果的实现 2.2 UIView 属性 2.2.1 UIView 几何属性 2.2. ...

  4. iOS疯狂详解之AFNetworking图片缓存问题

    AFNetworking网络库已经提供了很好的图片缓存机制,效率是比较高的,但是我发现没有直接提供清除缓存的功能,可项目通常都需要添加 清除功能的功能,因此,在这里我以UIImageView+AFNe ...

  5. iOS多线程详解:实践篇

    iOS多线程实践中,常用的就是子线程执行耗时操作,然后回到主线程刷新UI.在iOS中每个进程启动后都会建立一个主线程(UI线程),这个线程是其他线程的父线程.由于在iOS中除了主线程,其他子线程是独立 ...

  6. iOS疯狂详解之开源库

    youtube下载神器:https://github.com/rg3/youtube-dl vim插件:https://github.com/Valloric/YouCompleteMe vim插件配 ...

  7. [iOS] 国际化详解

    PS:修改设备系统语言方法 设置 -> 通用 -> 语言与地区 -> iPhone 语言 Settings -> General -> Language & Re ...

  8. UE4 IOS打包详解

    写在前面:因为是详解,所以可能写的有可能啰嗦,也有可能有些步骤是你经历过的,那么请忽略它,向下寻找可能的答案,如果没能解决你的问题,那么对此感到很抱歉,没能帮到你,欢迎你给我邮件: bluecode6 ...

  9. iOS模式详解runtime面试工作

    简书:http://www.jianshu.com/p/19f280afcb24 对于从事 iOS 开发人员来说,所有的人都会答出「runtime 是运行时」,什么情况下用runtime?,大部分人能 ...

最新文章

  1. unity3d中旋转
  2. print2flashwindows7旗舰版下载哪一个_JUJUMAO_MSDN原版 win 7 二合一 旗舰版32位 64位原版ISO镜像...
  3. 互联生活:业务模式聚焦
  4. eyoucms内容添加发布
  5. javascript学习之数组的使用四 concat方法 join方法 reverse方法 sort方法
  6. linux更换内核后无法上网,ubuntu 系统升级内核版本后网络不能正常启动问题
  7. Atitit mybatis使用简明教程 目录 1.1. Mybatis.xml 配置文件 1 1.2. Datamp.xml mapper文件主要作用是分模块放sql语句 2 1.3. 查询
  8. Let'sEncrypt免费域名申请一键式脚本-目前最简单的脚本
  9. commvault xtrabackup全实例备份失败 处于未决状态(下)
  10. JTAG和SWD接口定义(20针)
  11. 储存卡怎么格式化为fat32_64g储存卡怎么格式化成fat32格式化
  12. 大一期末计算机应用基础考什么,计算机应用基础期末考试试题
  13. html style设置靠右,css怎么设置右对齐
  14. Redis基础--Redis 4.0 常用配置
  15. 非模式物种ROSE超级增强子鉴定分析详解
  16. 超级警探大战悍匪2java_Java笔记一
  17. 设备树使用手册【转】
  18. 使用高德地图API实现历史轨迹查询
  19. 新冠治愈之旅和未来的时光
  20. 专注儿童编程,核桃编程招人啦~

热门文章

  1. TSP问题的遗传算法实现(C++)
  2. c语言调用tuxedo步骤,c语言入门之BCB客户端tuxedo开发实例
  3. stty 命令中文使用详解
  4. Spring知识点记录
  5. 算法竞赛入门经典(第2版)—第五章(C++与STL入门)
  6. Kubernetes详解(四十一)——Secret创建
  7. 微信小程序60秒倒计时
  8. extern 用法简单示例
  9. Post请求的两种编码格式:application/x-www-form-urlencoded和multipart/form-data
  10. 按照计算机名共享打印机,添加网络共享打印机