服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - iOS应用开发中导航栏按钮UIBarButtonItem的添加教程

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

2021-01-06 15:06容芳志 IOS

这篇文章主要介绍了iOS应用开发中导航栏按钮UIBarButtonItem的添加教程,文中详细介绍了使用UINavigationController导航控制器添加的过程,需要的朋友可以参考下

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

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

2、uinavigationcontroller的结构组成
看下图,uinavigationcontroller有navigation bar  ,navigation view ,navigation toobar等组成。

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

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

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

4、创建一个view controller,命名为rootviewcontroller:依次选择file——new——new file,默认勾上with xib for user interface.

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

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

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

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视图添加完成
看看效果:

 

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

现在还没有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了,效果如下:

 

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

这里重点介绍下

 

复制代码 代码如下:


uibarbuttonitem *leftbutton = [[uibarbuttonitemalloc]initwithbarbuttonsystemitem:uibarbuttonsystemitemactiontarget:selfaction:@selector(selectleftaction:)];

 

 


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

 

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

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时,弹出提示:

 

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


两个按钮切换的简单例子

下面这个代码例子的背景是:导航条右侧有个 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];
 }
}

延伸 · 阅读

精彩推荐
  • IOSIOS 屏幕适配方案实现缩放window的示例代码

    IOS 屏幕适配方案实现缩放window的示例代码

    这篇文章主要介绍了IOS 屏幕适配方案实现缩放window的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    xiari5772021-06-01
  • IOS关于iOS自适应cell行高的那些事儿

    关于iOS自适应cell行高的那些事儿

    这篇文章主要给大家介绍了关于iOS自适应cell行高的那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    daisy6092021-05-17
  • IOS解析iOS开发中的FirstResponder第一响应对象

    解析iOS开发中的FirstResponder第一响应对象

    这篇文章主要介绍了解析iOS开发中的FirstResponder第一响应对象,包括View的FirstResponder的释放问题,需要的朋友可以参考下...

    一片枫叶4662020-12-25
  • IOSiOS中tableview 两级cell的展开与收回的示例代码

    iOS中tableview 两级cell的展开与收回的示例代码

    本篇文章主要介绍了iOS中tableview 两级cell的展开与收回的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    J_Kang3862021-04-22
  • IOSiOS布局渲染之UIView方法的调用时机详解

    iOS布局渲染之UIView方法的调用时机详解

    在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题,下面这篇文章主要给大家介绍了关于iOS布局渲染之UIView方法调用时机的相关资料...

    windtersharp7642021-05-04
  • IOSiOS 雷达效果实例详解

    iOS 雷达效果实例详解

    这篇文章主要介绍了iOS 雷达效果实例详解的相关资料,需要的朋友可以参考下...

    SimpleWorld11022021-01-28
  • IOSiOS通过逆向理解Block的内存模型

    iOS通过逆向理解Block的内存模型

    自从对 iOS 的逆向初窥门径后,我也经常通过它来分析一些比较大的应用,参考一下这些应用中某些功能的实现。这个探索的过程乐趣多多,不仅能满足自...

    Swiftyper12832021-03-03
  • IOSIOS开发之字典转字符串的实例详解

    IOS开发之字典转字符串的实例详解

    这篇文章主要介绍了IOS开发之字典转字符串的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这样的方法,需要的朋友可以参考下...

    苦练内功5832021-04-01