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. 【BZOJ 1019】【SHOI2008】汉诺塔(待定系数法递推)

    1019: [SHOI2008]汉诺塔 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 559  Solved: 341[Submit][Status] ...

  2. DOM(四)事件流

    1.冒泡型事件 浏览器的事件模型分两种:捕获型事件和冒泡型事件.由于ie不支持捕获型事件,所以以下主要以冒泡型事件作为讲解.(dubbed bubbling)冒泡型指事件安装最特定的事件到最不特定的事 ...

  3. Code Hunters: Hello, world!

    大家好!我们是来自MSRA联合培养班的Code Hunters小组,在未来三个月时间里我们将与殷秋丰老师一起学习高级软件工程这门课. 我们小组共有五名分别来自享誉海内外的中国科学技术大学和北京航空航天 ...

  4. 【团队项目演示】FZU5BOYS之团队项目链接汇总

    FZU5BOYS      项目冲刺之博客汇总 Alpha版本 Day One Day Two Day Three Day Four Day Five Day Six Day Seven Day Ei ...

  5. web服务器

    1.打破信息孤岛,实现信息的集成 2.配置文件  web.xml          定义自己的服务器应该要哪些功能! 3.tomcat 是一个servlet容器,一个web服务器. 部署:将web应用 ...

  6. 【BZOJ】3527: [Zjoi2014]力(fft+卷积)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3527 好好的一道模板题,我自己被自己坑了好久.. 首先题目看错.......什么玩意.......首 ...

  7. .NET Core 工具从 project.json 移动到基于 MSBuild 的项目后的使用

    .NET Core 从preview 4 开始弃用project.json 可以从这下载最新版本: https://github.com/dotnet/cli 使用VS2017 RC新建.net co ...

  8. strncmp很好的函数

    strcmp比较的是所有的长度,而strncmp可以比较前几个长度 strncmp(s1,s2,n);这样就比较了s1,s2,前n个长度的大小.

  9. python多态

    多态是面向对象语言的一个基本特性,多态意味着变量并不知道引用的对象是什么,根据引用对象的不同表现不同的行为方式.在处理多态对象时,只需要关注它的接口即可,python中并不需要显示的编写(像Java一 ...

  10. SpringMVC配置

    博客园 闪存 首页 新随笔 联系 管理 订阅 随笔- 4  文章- 1  评论- 0  搭建springmvc框架的另一种思路 在一个完整的项目里搭建springmvc框架的时候, 通常情况下,初学者 ...