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

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

服务器之家 - 编程语言 - IOS - iOS App开发中导航栏的创建及基本属性设置教程

iOS App开发中导航栏的创建及基本属性设置教程

2021-01-08 14:16苹果吧 IOS

这篇文章主要介绍了iOS App开发中导航栏的创建及基本属性设置教程,即用UINavigationController来编写navigation,示例代码为Objective-C语言,需要的朋友可以参考下

文件目录如下:基本导航顺序: root -> first -> second -> third。其中,firstviewcontroller作为 navigation堆栈的rootview

iOS App开发中导航栏的创建及基本属性设置教程

1、创建navigation

如果是想直接把navigation导航作为项目一开始的跟视图,把rootviewcontroller.h文件里的nav属性放到appdelegate.h里即可,再把rootviewcontroller.m文件里的action的代码复制到 appdelegate.m里的didfinishlaunchingwithoptions 方法里,最后把 self.window.rootviewcontroller 设置 uinavigationcontroller类型的属性nav即可

在rootviewcontroller.h文件

复制代码 代码如下:


#import <uikit/uikit.h>
@class firstviewcontroller;

 

@interface rootviewcontroller : uiviewcontroller

@property (strong, nonatomic) uinavigationcontroller *nav;

- (ibaction)btnclick:(uibutton *)sender;

@end


在rootviewcontroller.m 文件里的随意一个自定义action里:

复制代码 代码如下:


- (ibaction)btnclick:(uibutton *)sender {
   
    //创建一个viewcontroller
    firstviewcontroller *fristview =[[[firstviewcontroller alloc] init] autorelease];
  
   
    //初始化uinavigationcontroller(方式一)
    self.nav = [[[uinavigationcontroller alloc] initwithrootviewcontroller:fristview] autorelease];
   
   
    //初始化uinavigationcontroller(方式二)
  //  self.nav = [[[uinavigationcontroller alloc] init] autorelease];
  //  [self.nav pushviewcontroller:fristview animated:yes];

 

   
    //初始化uinavigationcontroller(方式三,失败,xib文件加载失败,原因暂时不明)
   // self.nav = [[[uinavigationcontroller alloc] initwithnibname:@"firstviewcontroller" bundle:nil] autorelease];
   
   
    //跳转到firstview页面
    [self presentviewcontroller:self.nav animated:yes completion:nil];
   
   
    //这种写法一般用于往view里添加一些小控件,如button  label textfield之类的,不适宜用于页面跳转
    // [self.view addsubview:self.nav.view];
   
   
}

 

2.navigation的常用属性设置例子
我们的navigation就加载上去了以后,下面我们来设置navigation的属性:

复制代码 代码如下:

- (void)viewdidload 

    [super viewdidload]; 
    // do any additional setup after loading the view. 
    [self.navigationcontroller.navigationbar settranslucent:no];//设置navigationbar的半透明 
    self.title = @"navigationcontroller";//设置navigationbar上显示的标题 
    [self.navigationcontroller.navigationbar setbartintcolor:[uicolor purplecolor]];//设置navigationbar的颜色 
    self.navigationitem.leftbarbuttonitem = [[uibarbuttonitem alloc]initwithbarbuttonsystemitem:uibarbuttonitemstyledone target:self action:nil];//设置navigationbar左边按钮 
    self.navigationitem.rightbarbuttonitem = [[uibarbuttonitem alloc]initwithbarbuttonsystemitem:uibarbuttonitemstyleplain target:self action:nil];//设置navigationbar右边按钮 
    [self.navigationcontroller.navigationbar settintcolor:[uicolor whitecolor]];//设置navigationbar上左右按钮字体颜色 


效果图如下:

 

iOS App开发中导航栏的创建及基本属性设置教程

这里还有一个属性常用,就是:

 

复制代码 代码如下:

 

nsarray *arr = [nsarray arraywithobjects:@"1",@"2", nil nil]; 
    uisegmentedcontrol *segment = [[uisegmentedcontrol alloc]initwithitems:arr]; 
    self.navigationitem.titleview = segment;//设置navigation上的titleview 

 

 

效果如下:

iOS App开发中导航栏的创建及基本属性设置教程

对,我们看到中间的字变成了两个可选的按钮,这就是navigation的另一个属性:navigationitem.titleview。

下面我们再建立一个视图,看一下两个视图之前是怎样通信的。

在第二个视图中,我添加了一个button来显示,并加了一个成员变量来接收从第一个视图中穿过来的值:
 

复制代码 代码如下:

@interface secondviewcontroller : uiviewcontroller 
@property (copy,nonatomic) nsstring *str; 
@end 

 

复制代码 代码如下:

- (void)viewdidload 

    [super viewdidload]; 
    // do any additional setup after loading the view. 
    self.title = @"second"; 
    uibutton *abutton = [[uibutton alloc]initwithframe:cgrectmake(30, 30, 50, 30)]; 
    [abutton settitle:_str forstate:uicontrolstatenormal]; 
    [abutton addtarget:self action:@selector(clicked) forcontrolevents:uicontroleventtouchupinside]; 
    [self.view addsubview:abutton]; 


然后我将第一个视图的右边按钮添加一个事件,点击按钮,就会推出第二个视图,并显示我们传过来的值:
 

复制代码 代码如下:

- (void)clicked{ 
    secondviewcontroller *second = [[secondviewcontroller alloc]init]; 
    [self.navigationcontroller pushviewcontroller:second animated:yes]; 
    second.str = @"hello!!"; 
    [second release]; 


下面,我们来运行一下:

 

iOS App开发中导航栏的创建及基本属性设置教程

点进按钮以后,我们的第二个视图推出,button显示了传过来的值。

然后我们点击回button,还有navigation另外一个方法:

复制代码 代码如下:

- (void)clicked{ 
    [self.navigationcontroller popviewcontrolleranimated:yes]; 


这样就可以回到第一个视图。

延伸 · 阅读

精彩推荐
  • IOSiOS中时间与时间戳的相互转化实例代码

    iOS中时间与时间戳的相互转化实例代码

    这篇文章主要介绍了iOS中时间与时间戳的相互转化实例代码,非常具有实用价值,需要的朋友可以参考下。...

    张无忌!4812021-03-09
  • IOS谈一谈iOS单例模式

    谈一谈iOS单例模式

    这篇文章主要和大家谈一谈iOS中的单例模式,单例模式是一种常用的软件设计模式,想要深入了解iOS单例模式的朋友可以参考一下...

    彭盛凇11872021-01-19
  • IOSiOS常见的几个修饰词深入讲解

    iOS常见的几个修饰词深入讲解

    这篇文章主要给大家介绍了关于iOS常见的几个修饰词的相关资料,iOS修饰词包括assign、weak、strong、retain、copy、nonatomic、atomic、readonly、readwrite,文中通过示...

    郡王丶千夜7422021-05-10
  • IOSiOS逆向教程之logify跟踪方法的调用

    iOS逆向教程之logify跟踪方法的调用

    这篇文章主要给大家介绍了关于iOS逆向教程之logify跟踪方法调用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学...

    Mr.Guo11472021-04-28
  • IOSxcode8提交ipa失败无法构建版本问题的解决方案

    xcode8提交ipa失败无法构建版本问题的解决方案

    xcode升级到xcode8后发现构建不了新的版本。怎么解决呢?下面小编给大家带来了xcode8提交ipa失败无法构建版本问题的解决方案,非常不错,一起看看吧...

    Cinna丶7542021-02-03
  • IOSiOS10 Xcode8适配7个常见问题汇总

    iOS10 Xcode8适配7个常见问题汇总

    这篇文章主要为大家详细汇总了iOS10 Xcode8适配7个常见问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    索马里猫10332021-02-01
  • IOSIOS网络请求之AFNetWorking 3.x 使用详情

    IOS网络请求之AFNetWorking 3.x 使用详情

    本篇文章主要介绍了IOS网络请求之AFNetWorking 3.x 使用详情,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    总李写代码6892021-03-04
  • IOSiOS APP实现微信H5支付示例总结

    iOS APP实现微信H5支付示例总结

    这篇文章主要介绍了iOS APP实现微信H5支付示例总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    一张小A11332021-06-01