iOS应用开发中导航栏按钮UIBarButtonItem的添加教程

 更新时间:2016年02月04日 09:47:59   作者:容芳志  
这篇文章主要介绍了iOS应用开发中导航栏按钮UIBarButtonItem的添加教程,文中详细介绍了使用UINavigationController导航控制器添加的过程,需要的朋友可以参考下

1、UINavigationController导航控制器如何使用
UINavigationController可以翻译为导航控制器,在iOS里经常用到。
我们看看它的如何使用:
下面的图显示了导航控制器的流程。最左侧是根视图,当用户点击其中的General项时 ,General视图会滑入屏幕;当用户继续点击Auto-Lock项时,Auto-Lock视图将滑入屏幕。相应地,在对象管理上,导航控制器使用了导航堆栈。根视图控制器在堆栈最底层,接下来入栈的是General视图控制器和Auto-Lock视图控制器。可以调用pushViewControllerAnimated:方法将视图控制器推入栈顶,也可以调用popViewControllerAnimated:方法将视图控制

20162494526157.png (636×288)

2、UINavigationController的结构组成
看下图,UINavigationController有Navigation bar  ,Navigation View ,Navigation toobar等组成。

20162494548655.png (646×476)

现在我们建立一个例子,看看如何使用UINavigationController
3、新建一个项目
命名为UINavigationControllerDemo,为了更好理解UINavigationController,我们选择Empty Application模板

20162494608179.png (728×491)

4、创建一个View Controller,命名为RootViewController:依次选择File——New——New File,默认勾上With XIB for user interface.

20162494625133.png (728×491)

选择正确位置创建完成,这时项目里多了三个文件,分别是RootViewController.h RootViewController.m RootViewController.xib文件。
打开RootViewController.xib,添加一个按钮控件,按钮Button改成 :Goto SecondView,为跳转做准备

20162494706858.png (923×284)

5、打开AppDelegate.h,向其中添加属性:

复制代码 代码如下:

@property (strong, nonatomic) UINavigationController *navController; 

添加后AppDelegate.h文件代码如下:
复制代码 代码如下:

#import <UIKit/UIKit.h> 
 
@class ViewController; 
 
@interface AppDelegate : UIResponder <UIApplicationDelegate> 
 
@property (strong, nonatomic) UIWindow *window; 
 
@property (strong, nonatomic) ViewController *viewController; 
 
@property (strong, nonatomic) UINavigationController *navController; 
 
@end 

6、在AppDelegate.m 文件的didFinishLaunchingWithOptions方法中创建添加navController,RootViewController视图。
复制代码 代码如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    RootViewController *rootView = [[RootViewController alloc] init]; 
    rootView.title = @"Root View"; 
     
    self.navController = [[UINavigationController alloc] init]; 
    [self.navController pushViewController:rootView animated:YES]; 
    [self.window addSubview:self.navController.view]; 
    [self.window makeKeyAndVisible]; 
    return YES; 


给rootView的titie命名为 Root View,好识别View直接的切换关系。用pushViewController把rootView加入到navController的视图栈中。
7、现在Root视图添加完成
看看效果:

20162494734438.png (368×716)

现在还没有Navigation bar 。只有title。
8、添加UIBarButtonItem
bar ButtonItem分左右UIBarButtonItem。我们把左右的都添加上去。
在RootViewController.m中添加代码如下:

复制代码 代码如下:

- (void)viewDidLoad 

    [super viewDidLoad]; 
 
    UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(selectLeftAction:)]; 
    self.navigationItem.leftBarButtonItem = leftButton; 
     
    UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd  target:self action:@selector(selectRightAction:)]; 
    self.navigationItem.rightBarButtonItem = rightButton;<p class="p1">}

这样添加了UIBarButtonItem了,效果如下:

20162494751281.png (362×214)

这里重点介绍下

复制代码 代码如下:

UIBarButtonItem *leftButton = [[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemActiontarget:selfaction:@selector(selectLeftAction:)];


UIBarButtonSystemItemAction的风格,这是系统自带的按钮风格,看下图,你不用一个个试验,你也知道想用那个item,如下图:

20162494809920.png (692×640)

9、响应UIBarButtonItem的事件的实现
我们在 action:@selector(selectLeftAction:);
action添加了selectLeftAction和selectRightAction
在RootViewController.m文件中添加代码实现:

复制代码 代码如下:

-(void)selectLeftAction:(id)sender 

    UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"提示" message:@"你点击了导航栏左按钮" delegate:self  cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; 
    [alter show]; 

 
-(void)selectRightAction:(id)sender 

    UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"提示" message:@"你点击了导航栏右按钮" delegate:self  cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; 
    [alter show]; 
}
 
这样在点击左右的UIBarButtonItem时,弹出提示:

20162494825463.png (281×302)


两个按钮切换的简单例子

下面这个代码例子的背景是:导航条右侧有个 edit button,左侧是 back button 和 add button。代码实现的按钮切换/隐藏功能具体就是:点击 edti button 的话,back button 隐藏,同时显示 add button。用户编辑完以后则显示 back button 隐藏 add button。这一功能在很多应用里都会用到,而且适当隐藏掉无用按钮对保持界面简洁以及引导用户操作都是有意义的。

复制代码 代码如下:

- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
 
    [super setEditing:editing animated:animated];
 
// Don't show the Back button while editing.
[self.navigationItem setHidesBackButton:editing animated:YES];
 
if (editing) {
    self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertMe)] autorelease];
}else {
    self.navigationItem.leftBarButtonItem = nil;
//self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(backButton) ] autorelease];
 }
}

相关文章

  • 详解iOS 关于字体根据不同屏幕尺寸等比适配的问题

    详解iOS 关于字体根据不同屏幕尺寸等比适配的问题

    这篇文章主要介绍了详解iOS 关于字体根据不同屏幕尺寸等比适配的问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • iOS支付宝使用方法详解

    iOS支付宝使用方法详解

    这篇文章主要为大家详细介绍了iOS支付宝的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 详解关于iOS内存管理的规则思考

    详解关于iOS内存管理的规则思考

    本篇文章主要介绍了关于iOS内存管理的规则思考,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-12-12
  • iOS 定制多样式二维码

    iOS 定制多样式二维码

    最常见的二维码功能包括信息获取、网站跳转、电商交易、手机支付等等,其拥有密度小、信息容量大、容错能力强、成本低、制作难度低等优点。在移动开发中,二维码的地位也越来越重要,掌握二维码的基本操作是重要的本领之一。本文将讲解iOS定制二维码的步骤与方法。
    2017-03-03
  • iOS中UITextField实现过滤选中状态拼音的代码

    iOS中UITextField实现过滤选中状态拼音的代码

    这篇文章主要介绍了iOS中UITextField实现过滤选中状态拼音的代码,需要的朋友可以参考下
    2018-01-01
  • iOS通过摄像头图像识别技术分享

    iOS通过摄像头图像识别技术分享

    本篇文章给大家详细讲述了让IOS开发中通过摄像头进行图像识别的相关技术,对此有兴趣的朋友参考学习下吧。
    2018-02-02
  • iOS 防止按钮多次点击造成多次响应的方法

    iOS 防止按钮多次点击造成多次响应的方法

    这篇文章主要介绍了iOS 防止按钮多次点击造成多次响应的方法的相关资料,这里对多次点击造成的响应提供了解决办法,需要的朋友可以参考下
    2016-11-11
  • iOS中类似微信红点显示功能

    iOS中类似微信红点显示功能

    ios中类似微信红点显示功能,设计思路非常简单,给UIView增加一个分类 所有的视图都可以根据需要来进行红点显示。下面通过实例代码看下实现方法吧
    2016-12-12
  • iOS 图片加载框架SDWebImage解读

    iOS 图片加载框架SDWebImage解读

    本篇文章主要介绍了iOS 图片加载框架SDWebImage解读,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • IOS自适配利器Masonry使用指南

    IOS自适配利器Masonry使用指南

    如果说自动布局解救了多屏幕适配,那众多三方库的出现就解救了系统自动布局的写法。Masonry就是其中一个。用法上也比较简单灵活,很大程度上替代了传统的NSLayoutConstraint布局方式。下面我们就来具体探讨下吧
    2016-01-01

最新评论