IOS 入门开发之创建标题栏UINavigationBar的使用

http://xys289187120.blog.51cto.com/3361352/685746

    IOS 开发有关界面的东西不仅可以使用代码来编写,也可以使用Interface Builder可视化工具来编写。今天有个朋友问我这两个有什么区别,首先说 说IB ,使用它编辑出来的控件其实底层还是调用代码只是苹果封装出来让开发者更好使用而已。它的优点是方便、快捷最重要的是安全,因为控件的释放它会帮我们完成 不用手动释放。缺点是多人开发不好维护,就好比谁写的IB谁能看懂,别人看的话就比较费劲,不利于代码的维护。两种方式各有利弊,不过我个人还是比较喜欢 纯代码,因为任何程序语言,或者任何脚本语言,代码和可视化工具比起来永远是最底层的。

利用代码在屏幕中添加一个标题栏,并且在标题栏左右两方在添加两个按钮,点击后响应这两个按钮。
这里设置标题栏的显示范围。

  1. //创建一个导航栏
  2. UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];

  有了标题栏后,须要在标题栏上添加一个集合Item用来放置 标题内容,按钮等。

  1. //创建一个导航栏集合
  2. UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:nil];

在这个集合Item中添加标题,按钮。

style:设置按钮的风格,一共有3中选择。
action:@selector:设置按钮点击事件。

  1. //创建一个左边按钮
  2. UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:@"左边"
  3. style:UIBarButtonItemStyleBordered
  4. target:self
  5. action:@selector(clickLeftButton)];
  6. //创建一个右边按钮
  7. UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"右边"
  8. style:UIBarButtonItemStyleDone
  9. target:self
  10. action:@selector(clickRightButton)];
  11. //设置导航栏内容
  12. [navigationItem setTitle:@"雨松MOMO程序世界"];

将标题栏中的内容全部添加到主视图当中。

  1. //把导航栏添加到视图中
  2. [self.view addSubview:navigationBar];

最后将控件在内存中释放掉,避免内存泄漏。

  1. //释放对象
  2. [navigationItem release];
  3. [leftButton release];
  4. [rightButton release];

如图所示:添加这两个按钮的点击响应事件。

  1. -(void)clickLeftButton
  2. {
  3. [self showDialog:@"点击了导航栏左边按钮"];
  4. }
  5. -(void)clickRightButton
  6. {
  7. [self showDialog:@"点击了导航栏右边按钮"];
  8. }

点击后打开一个Dialog对话框,根据点击不同的按钮传入不同的显示内容。

  1. -(void)showDialog:(NSString *) str
  2. {
  3. UIAlertView * alert= [[UIAlertView alloc] initWithTitle:@"这是一个对话框" message:str delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil];
  4. [alert show];
  5. [alert release];
  6. }

最后贴上完整的代码

    1. #import "TitleViewController.h"
    2. @implementation TitleViewController
    3. - (void)didReceiveMemoryWarning
    4. {
    5. // Releases the view if it doesn't have a superview.
    6. [super didReceiveMemoryWarning];
    7. // Release any cached data, images, etc that aren't in use.
    8. }
    9. #pragma mark - View lifecycle
    10. // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
    11. - (void)viewDidLoad
    12. {
    13. [super viewDidLoad];
    14. //创建一个导航栏
    15. UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    16. //创建一个导航栏集合
    17. UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:nil];
    18. //创建一个左边按钮
    19. UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:@"左边"
    20. style:UIBarButtonItemStyleBordered
    21. target:self
    22. action:@selector(clickLeftButton)];
    23. //创建一个右边按钮
    24. UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"右边"
    25. style:UIBarButtonItemStyleDone
    26. target:self
    27. action:@selector(clickRightButton)];
    28. //设置导航栏内容
    29. [navigationItem setTitle:@"雨松MOMO程序世界"];
    30. //把导航栏集合添加入导航栏中,设置动画关闭
    31. [navigationBar pushNavigationItem:navigationItem animated:NO];
    32. //把左右两个按钮添加入导航栏集合中
    33. [navigationItem setLeftBarButtonItem:leftButton];
    34. [navigationItem setRightBarButtonItem:rightButton];
    35. //把导航栏添加到视图中
    36. [self.view addSubview:navigationBar];
    37. //释放对象
    38. [navigationItem release];
    39. [leftButton release];
    40. [rightButton release];
    41. }
    42. -(void)clickLeftButton
    43. {
    44. [self showDialog:@"点击了导航栏左边按钮"];
    45. }
    46. -(void)clickRightButton
    47. {
    48. [self showDialog:@"点击了导航栏右边按钮"];
    49. }
    50. -(void)showDialog:(NSString *) str
    51. {
    52. UIAlertView * alert= [[UIAlertView alloc] initWithTitle:@"这是一个对话框" message:str delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil];
    53. [alert show];
    54. [alert release];
    55. }
    56. - (void)viewDidUnload
    57. {
    58. [super viewDidUnload];
    59. // Release any retained subviews of the main view.
    60. // e.g. self.myOutlet = nil;
    61. }
    62. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    63. {
    64. // Return YES for supported orientations
    65. return (interfaceOrientation == UIInterfaceOrientationPortrait);
    66. }
    67. @end

IOS 入门开发之创建标题栏UINavigationBar的使用(二)的更多相关文章

  1. IOS 入门开发之创建标题栏UINavigationBar的使用

    转自:http://xys289187120.blog.51cto.com/3361352/685746 IOS 入门开发之创建标题栏UINavigationBar的使用     IOS 开发有关界面 ...

  2. IOS 入门开发教程

    object-c: http://mobile.51cto.com/iphone-261129.htm Objective-C入门教材 Objective-C入门教材 2011-05-11 15:58 ...

  3. iOS 非ARC基本内存管理系列 -手把手教你ARC——iOS/Mac开发ARC入门和使用(转)

    手把手教你ARC——iOS/Mac开发ARC入门和使用 Revolution of Objective-c 本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流 ...

  4. TeeChart .NET for iOS图表开发入门教程

    去年,TeeChart 为iOS图表开发专门发布了TeeChart NET for iOS(包含在TeeChart Mobile中),相信很多人都对其感兴趣.慧都为大家制作了TeeChart NET ...

  5. iOS开发:创建真机调试证书及描述文件

    iOS开发:创建真机调试证书及描述文件 关于苹果iOS开发,笔者也是从小白过来的,经历过各种困难和坑,其中就有关于开发证书,生产证书,in_house证书,add_Hoc证书申请过程中的问题,以及上架 ...

  6. Sagit.Framework For IOS 开发框架入门开发教程2:一行代码实现引导页

    前言: 开篇比较简单:Sagit.Framework For IOS 开发框架入门开发教程1:框架下载与环境配置 第二篇教程之前写了一半,感觉不太好写,而且内容单纯介绍API,要说的很多,又枯燥乏味. ...

  7. iOS常用开发技巧

    iOS开发过程中,总有那么一些个小问题让人纠结,它们不会让程序崩溃,但是会让人崩溃.除此之外,还将分享一些细节现在我通过自己的总结以及从其他地方的引用,来总结一下一些常见小问题. 本篇长期更新,多积累 ...

  8. IOS入门之Swift语言(一)

    经过不断的努力,小哥也买了台苹果设备,终于可以开始我的IOS之旅了,说来确实令人苦恼,为了学习IOS我这着贫农阶级,省了几个月的零花钱,外加向亲朋好友求救,最终痛下心扉,卖了台MAC pro128G版 ...

  9. iOS常用开发资源整理

    在行--专家付费咨询 杂项 App Release Checklist—iOS App发布清单. Hey Focus—帮助你专注于一个任务. Objective Cloud—Objective C A ...

随机推荐

  1. webSocket实现web及时聊天的例子

    概述 websocket目前虽然无法普及应用,未来是什么样子,我们不得而知,但现在开始学习应用它,只有好处没有坏处,本随笔的WebSocket是版本13(RFC6455)协议的实现,也是目前webso ...

  2. Orchard内置特性(以模块来说的)

    本文链接:http://www.cnblogs.com/souther/p/4539169.html 主目录 Orchard中有很多可以直接和多次使用的特性,这些东西在官方的Gallery中可以找到. ...

  3. 24.C#LINQ TO XML(十二章12.3)

    自己也写了那么多,但还有很多不懂,有点浮躁吧,但饭还是要吃啊,说说LINQ TO XML吧. LINQ TO XML位于System.Xml.Linq程序集,并且大多数类型位于System.Xml.L ...

  4. GCD 深入理解:第二部分

    在本系列的第一部分中,你已经学到超过你想像的关于并发.线程以及GCD 如何工作的知识.通过在初始化时利用 dispatch_once,你创建了一个线程安全的 PhotoManager 单例,而且你通过 ...

  5. 20步打造最安全的NGINX WEB服务器

    Nginx 是一个轻量级的,高性能的Web服务器以及反向代理和邮箱(IMAP/POP3)代理服务器.它运行在UNIX,GNU /linux,BSD 各种版本,Mac OS X,Solaris和Wind ...

  6. Linux下svn命令详解

    本文主要是说明linux下svn命令的使用方法,同时记录自己在使用中遇到的一些疑惑. 1.Linux命令行下将文件checkout到本地目录 svn checkout url(url是服务器上的目录) ...

  7. 转-JS中document对象详解

    对象属性 document.title //设置文档标题等价于HTML的<title>标签 document.bgColor //设置页面背景色 document.fgColor //设置 ...

  8. DML语言练习,数据增删改查,复制清空表

    Connected Connected as TEST@ORCL SQL> select * from t_hq_bm; BUMBM BUMMC DIANH ---------- ------- ...

  9. CentOS7 安装 Mono

    官网参考:http://www.mono-project.com/docs/getting-started/install/linux/#centos-7-fedora-19-and-later-an ...

  10. 【Matplotlib】 标注细节注意

    相关文档: Artists BBox 由于蓝线和红线的存在,现在刻度标注很难看清楚.我们可以使他们更大,也可以使它们的属性以便使得线呈现半透明的白色背景.这样做我们既可以看到数据也可以看到刻度标注了. ...