本文是使用纯代码实现一个导航栏的效果。单击按钮并且产生事件。基本思路是:

1.创建一个导航栏(UINavigationBar对象)

2.创建一个导航栏集合(UINavigationItem对象)

3.创建一个左边按钮、一个右边按钮(UIBarButtonItem对象),并实现对应的事件方法

4.将导航栏集合添加到导航栏中,设置动画关闭

5.把左右两个按钮添加到导航栏集合中去

6.在视图中显示当前创建的导航栏

具体的实现代码如下:

ViewController.h文件中的代码不用改变,如下所示:

  1. #import <UIKit/UIKit.h>
  2. @interface ViewController : UIViewController
  3. @end

ViewController.m文件中的代码:

  1. #import "ViewController.h"
  2. @interface ViewController ()
  3. @end
  4. @implementation ViewController
  5. - (void)viewDidLoad
  6. {
  7. [super viewDidLoad];
  8. // Do any additional setup after loading the view, typically from a nib.
  9. //创建一个导航栏
  10. UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
  11. //创建一个导航栏集合
  12. UINavigationItem *navItem = [[UINavigationItem alloc] initWithTitle:nil];
  13. //在这个集合Item中添加标题,按钮
  14. //style:设置按钮的风格,一共有三种选择
  15. //action:@selector:设置按钮的点击事件
  16. //创建一个左边按钮
  17. UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:@"左边" style:UIBarButtonItemStyleBordered target:self action:@selector(clickLeftButton)];
  18. //创建一个右边按钮
  19. UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"右边" style:UIBarButtonItemStyleDone target:self action:@selector(clickRightButton)];
  20. //设置导航栏的内容
  21. [navItem setTitle:@"凌凌漆"];
  22. //把导航栏集合添加到导航栏中,设置动画关闭
  23. [navBar pushNavigationItem:navItem animated:NO];
  24. //把左右两个按钮添加到导航栏集合中去
  25. [navItem setLeftBarButtonItem:leftButton];
  26. [navItem setRightBarButtonItem:rightButton];
  27. //将标题栏中的内容全部添加到主视图当中
  28. [self.view addSubview:navBar];
  29. //最后将控件在内存中释放掉,以避免内存泄露
  30. [navItem release];
  31. [leftButton release];
  32. [rightButton release];
  33. }
  34. -(void)showDialog:(NSString *)str
  35. {
  36. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"这是一个对话框" message:str delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil];
  37. [alert show];
  38. [alert release];
  39. }
  40. -(void) clickLeftButton
  41. {
  42. [self showDialog:@"点击了导航栏左边按钮"];
  43. }
  44. -(void) clickRightButton
  45. {
  46. [self showDialog:@"点击了导航栏右边按钮"];
  47. }
  48. - (void)viewDidUnload
  49. {
  50. [super viewDidUnload];
  51. // Release any retained subviews of the main view.
  52. }
  53. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
  54. {
  55. return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
  56. }
  57. @end

IOS导航栏的使用方法的更多相关文章

  1. <iOS 导航栏>第一节:导航栏透明方法实现代码

      说下导航栏的透明方法:   很多应用需要导航栏随着向上滑动,逐渐从透明变成不透明,很炫酷,大部分应用都在使用导航栏渐变效果,现附上代码然后直接将实现,一会讲下如何来实现,这一部分直接上代码.   ...

  2. iOS - 导航栏UINavigationController经常使用属性

    1.设置导航栏标题 self.title = @"dylan_李伟宾"; 2.设置导航栏样式 设置方法: [self.navigationController.navigation ...

  3. 转:ios导航栏设置

    原帖:http://www.cocoachina.com/industry/20131104/7287.html 本文提供的代码需要用Xcode 5来执行.如果你还在使用老版本的Xcode,那么在运行 ...

  4. iOS导航栏背景,标题和返回按钮文字颜色

    在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Col ...

  5. iOS 导航栏黑线,UIImage 枚举处理方式

      ios 找出导航栏下面的黑线(可隐藏,改变样式等) http://www.jianshu.com/p/effa4a48f1e3     设置UIImage的渲染模式:UIImage.renderi ...

  6. ios 导航栏的显示和隐藏切换

    从简单的一个没有导航栏的界面A push到另一个有导航栏的界面 B,在界面A的逻辑中加入下面逻辑: 屏幕快照 2016-03-30 上午10.35.24.png 这样完美的处理了这个场景变换需求.引起 ...

  7. iOS导航栏的正确隐藏方式【转】

    简介:在项目中经常碰到首页顶部是无限轮播,需要靠最上面显示.有的设置导航栏为透明等一系列的方法,这个可以借助第三方.或者干脆简单粗暴的直接隐藏掉导航栏.可是push到下一个页面的时候是需要导航栏的,如 ...

  8. IOS导航栏颜色渐变与常用属性

    (转:http://www.cnblogs.com/Lingchen-start/archive/2015/10/23/4904361.html) 今年很忙,忙的写日志的时间都很少.  少的可怜. 自 ...

  9. iOS 导航栏实现总结

    目标: 在UI界面中实现 整体效果的导航栏, 比如1 首页无导航条,次页有导航条, 2 导航条中不包含下方不包含黑边 3 导航条包含多个筛选项 等等 问题: 用系统带的NavigateBar 来实现时 ...

随机推荐

  1. dedecms 模板文件不存在,无法解析文档"的终极各种解决办法

    方法一:[此对应喜欢把模板文件使用".html"的格式,]  /include/arc.archives.class.php 556行    if (!preg_match(&qu ...

  2. Unity3D中目标相对自身的前后左右方位判断

    http://blog.csdn.net/cen616899547/article/details/38336185 在做rpg类游戏的过程中,经常遇到要判断周围怪物相对自身的方位   1.判断目标在 ...

  3. worker中加载本地文件报错的解决方案

    如果在一个swf的主线程中加载文件时,报安全沙箱的错误, 网上有诸多的解决方案.但是如果在一个worker中加载本地文件报类似如下的错误: *** 安全沙箱冲突 *** SecurityError: ...

  4. 悟透javascript读书笔记

    1.undefined,null,0,""  这四个值转换为逻辑值时是false,其他无论简单类型值,对象或者函数转换过来都是true 2.如图 第一个是“声明了一个变量,给变量赋 ...

  5. 初接触eclipse和前后端调试问题 待续

    1.eclipse得连上服务器(tomcat).有JDK,才能跑起来.跑起来之后在本地localhost的行为eclipse的控制台上就可以看到,同样eclipse上对代码有所改动,浏览器上的loca ...

  6. jmeter 建立一个JMS主题测试计划

    创建两个线程组和组 每一个到10迭代. 总消息线程(6)x(1消息) (重复10次)= 60消息. 建立测试计划,您将使用 以下元素: 线程组 , JMS的出版商 , JMS用户 , 图结果 . 一般 ...

  7. HTML5自学笔记[ 10 ]简单的购物车拖拽

    用html5拖拽功能实现了一个简单的购物车,样式简陋,得学学画画提高下审美了T^T: <!doctype html> <html> <head> <meta ...

  8. Qt Charts

    简述 Qt Charts模块提供了一套易于使用的图表组件.它采用了Qt Graphics View框架,因此图表可以很容易地集成到现代的用户界面. Qt Charts可以被用作QWidgets.QGr ...

  9. JavaScript基础知识(1)

    表单的确认 : 客户端确认 --减少服务器负载 --缩短用户等待时间 --兼容性难 服务器端确认: ----统一确认 ----兼容性强 ----服务器负载重 JavaScript基本的写法:      ...

  10. Ajax请求中带有IPv6地址后的百分号的问题

    IPv6地址后的百分号: 对于连入网络但没有IPv6路由器或DHCPv6服务器的IPv6客户端,它们始终使用fe80::/64链路本地网络地址.如果运行Windows的计算机中有多个网络适配器连接到不 ...