UIBarbuttonItem

APPDelegate:

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

    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];

    //创建主界面,导航栏的第一个页面

    FirstViewController *fvc = [[FirstViewController alloc]init];

    

    //创建一个导航栏控制器

    UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:fvc];

    nav.navigationBar.barTintColor = [UIColor redColor];

    self.window.rootViewController = nav;//设置根控制器

    [self.window makeKeyAndVisible];

    return YES;

}

 

//给导航栏添加左右按钮

    UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc]initWithTitle:@"cancel" style:UIBarButtonItemStyleDone target:nil action:nil];

    self.navigationItem.leftBarButtonItem = cancelButton;

    self.navigationItem.leftBarButtonItem.tintColor = [UIColor whiteColor];

    

    UIBarButtonItem *nextButton = [[UIBarButtonItem alloc]initWithTitle:@"next" style:UIBarButtonItemStyleDone target:self action:@selector(goToSecond)];

    self.navigationItem.rightBarButtonItem = nextButton ;

    self.navigationItem.rightBarButtonItem.tintColor = [UIColor whiteColor];

    

    UILabel *yLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 44)];

    yLabel.backgroundColor = [UIColor yellowColor];

    yLabel.text = @"新浪";

    yLabel.font = [UIFont systemFontOfSize:22];

    yLabel.textColor = [UIColor redColor];

    yLabel.textAlignment = NSTextAlignmentCenter;

    self.navigationItem.titleView = yLabel;

-(void)goToSecond{

    //创建即将显示的界面

    SecondViewController *svc = [[SecondViewController alloc]init];

    //使用导航栏控制器切换页面

//    [self.navigationController presentViewController:svc animated:YES completion:nil];

    //push入栈 将当前的界面入栈,这个界面消失,将新的界面推送出来

    //pop 将当前的界面消失,从栈上最上面的界面(最后一个界面)出栈

    //设置默认提供的返回按钮的标题

    UIBarButtonItem *backItem = [[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStyleDone target:nil action:nil];

    self.navigationItem.backBarButtonItem = backItem;  

    [self.navigationController showViewController:svc sender:self];

}

 

-(void)viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];

    //显示工具栏

    self.navigationController.toolbarHidden = NO;

    self.navigationController.toolbar.barTintColor = [UIColor greenColor];

    //默认工具栏高44,导航栏高44

    //可以隐藏导航栏

//    self.navigationController.navigationBarHidden = YES;

}

 SecondViewController类.m

-(void)viewDidLoad{

    [super viewDidLoad];

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [btn setTitle:@"back" forState:UIControlStateNormal];

    btn.frame = CGRectMake(100, 200, 120, 50);

    [btn addTarget:self action:@selector(goback) forControlEvents:UIControlEventTouchUpInside];

    btn.tintColor = [UIColor whiteColor];

    [self.view addSubview:btn];

}

-(void)goback{

     //present 在现有的界面上盖上一层,dismissViewController删除

    //如果之前使用 的push 那么用pop

    [self.navigationController popViewControllerAnimated:YES];

    [self dismissViewControllerAnimated:YES completion:nil];

}

 

拓:navigationbar 上加多个button:

UIView *rightBarView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 60, 31)];UIButton *phonebutton = [UIButton buttonWithType:UIButtonTypeCustom];phonebutton.frame=CGRectMake(0, 5, 25, 25);[phonebutton setImage:[UIImage imageNamed:@"phone.png"] forState:UIControlStateNormal];[phonebutton addTarget:self action:@selector(phoneclick)forControlEvents:UIControlEventTouchDown];[rightBarView addSubview:phonebutton];UIButton *mapbutton = [UIButton buttonWithType:UIButtonTypeCustom];[mapbutton setFrame:CGRectMake(30, 5, 25, 25)];[mapbutton setImage:[UIImage imageNamed:@"c_address.png"] forState:UIControlStateNormal];[mapbutton addTarget:self action:@selector(mapclick)forControlEvents:UIControlEventTouchDown];[rightBarView addSubview:phonebutton];[rightBarView addSubview:mapbutton];rightBarView.backgroundColor=[UIColor clearColor];UIBarButtonItem *rightBtn = [[UIBarButtonItem alloc]initWithCustomView:rightBarView];self.navigationItem.rightBarButtonItem = rightBtn;

 更简便的方法:

转载于:https://www.cnblogs.com/yangqinglong/p/5363708.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度残差网络ResNet解析

ResNet在2015年被提出,在ImageNet比赛classification任务上获得第一名,因为它“简单与实用”并存,之后很多方法都建立在ResNet50或者ResNet101的基础上完成的,检测,分割,识别等领域都纷纷使用ResNet&#x…

基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN

object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。object detection要解决的问题就是物体在哪里,是什么这整个流程的问题。然而,这个问题可不是那么容易解决的,物体的尺寸变化范…

CNN的发展历史(LeNet,Alexnet,VGGNet,GoogleNet,ReSNet)

欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld。 关于卷积神经网络CNN,网络和文献中有非常多的资料,我在工作/研究中也用了好一段时间各种常见的model了,就想着简单整理一下,以备查阅之需…

如何在VMWare的Ubuntu虚拟机中设置共享文件夹

亲测有效:Ubuntu18.04 LTS、虚拟机VMware Workstation 14 Pro 14.1.3 build-9474260、Window7 自己的第一篇博文,由于时(shuǐ)间(png)原(yǒu)因(xin)&…

容器+AOP实现动态部署(四)

上篇咱们介绍了容器和AOP的结合,结合后怎样将对象增强服务并没有过多的说明,这里将详细说明怎样将对象 进行增强 ,达到一个一对多和多对多的增强方式 先从简单的方式说起 /** *JDK代理类,实现动态调用对象方法 */ public class JD…

深入理解卷积层,全连接层的作用意义

有部分内容是转载的知乎的,如有侵权,请告知,删除便是,但由于是总结的,所以不一一列出原作者是who。 再次感谢,也希望给其他小白受益。 首先说明:可以不用全连接层的。 理解1: 卷…

用ionic快速开发hybird App(已附源码,在下面+总结见解)

用ionic快速开发hybird App(已附源码,在下面总结见解) 1.ionic简介 ionic 是用于敏捷开发APP的解决方案。核心思路是:利用成熟的前端开发技术,来写UI和业务逻辑。也就是说,就是一个H5网站,这个区别于react-…

40 个重要的 HTML5 面试问题及答案

2019独角兽企业重金招聘Python工程师标准>>> 介绍 我是一个ASP.NET MVC开发人员。最近当我找工作的时候,我发现很多问题都是围绕HTML 5和它的新功能展开的。所以,下面我将列出40个有助于你提高相关HTML 5知识的重要问题。 这些问题并不能保证…

利用光学流跟踪关键点---30

原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 关键点:是多个方向上亮度变化强的区域。 opencv:版本是2.4. 光学流函数:calcOpticalFlowPyrLK()。(关键点侦测器使用goodFeaturesToTrack())二者结合。 相应的启动文…

register_globals(全局变量注册开关)

register_globals,是php.ini文件里面的一个配置选项,接下来,我们可以通过例程来分析一下,当register_globals on 与 register_globals off 的时候,对php语言的一些安全影响。测试源代码如下:index.html 源…

精述IBM的MQTT协议和MQTT-S协议

一.MQTT简介 MQTT (Message Queuing Telemetry Transport) 是由IBM研发的构建在TCP/IP之上的简单轻量的消息协议,目标使用场景为受限制环境,如低带宽、高延迟、不可靠网络,很适用于M2M和IoT中。它的竞争协议包括XMPP协议和IETF的C…

20150103--SQL连接查询+视图-02

20150103--SQL连接查询视图-02 子查询 一条查询语句出现在另外一条查询语句的内部,这条语句就被称之为子查询语句。 子查询分类 子查询可以根据子查询返回的结果以及子查询出现的位置两种方式进行分类 按结果分类: 标量子查询:子查询返回的结…

QtQuick controls和controls2 自定义样式

2019独角兽企业重金招聘Python工程师标准>>> controls import QtQuick 2.7 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4Rectangle {color: "green"Button {id:buttontext: qsTr("Second page")anchors.centerIn: parentpr…

电脑开机3秒就重启循环_电脑修好后客户不愿支付上门费,行,那电脑开机60秒自动关机吧!...

上门维修电脑已经非常普及了,上门维修电脑费用要比送修(送到维修店)费用高,送修电脑只有一项维修费用,上门维修电脑比送修多了一项费用,这项费用就是上门费。有人说维修电脑收取上门费用不合理,其实这样的说法非常自私…

jQuery属性筛选选择器

2019独角兽企业重金招聘Python工程师标准>>> 代码一 <h2>属性筛选选择器</h2><h3>[attval]、[att]、[att|val]、[att~val]</h3><div class"left" testattr"true" ><div class"div" testattr"t…

java 代码优化

Java程序中的内存管理机制是通过GC完成的&#xff0c;“一个对象创建后被放置在JVM的堆内存中&#xff0c;当永远不在应用这个对象的时候将会被JVM在堆内存中回收。被创建的对象不能再生&#xff0c;同时也没有办法通过程序语句释放”&#xff08;这个是《Java的GC机制》中提到…

MATLAB 长度和像素_Matlab中短时傅里叶变换 spectrogram和stft的用法

在Matlab中&#xff0c;做短时傅里叶变换需要使用函数spectrogram&#xff0c;而在Matlab2019中&#xff0c;引入了一个新的函数stft&#xff0c;下面我们就来看下这两个函数都如何使用。短时傅里叶变换的基本原理就是将数据分段加窗&#xff0c;做fft&#xff0c;在分段时会有…

图像处理基础——灰度共生矩阵

标准定义如下&#xff1a;对于取定的方向θ 和距离 d, 在方向为θ的直线上, 一个像元灰度为 i, 另一个与其相距为 d 像元的灰度为 j 的点对出现的频数即为灰度共生矩阵第(i, j)阵元的值。 怎样理解呢&#xff1f;看起来好复杂呀 呜呜呜 小白理解&#xff1a;灰度共生矩阵就…

iphone查看删除的短信_iPhone12发布!刚买的苹果手机短信全部消失了怎么办?

原标题&#xff1a;iPhone12发布&#xff01;刚买的苹果手机短信全部消失了怎么办&#xff1f;目前&#xff0c;人们的社交除了面对面交谈&#xff0c;用的最多的就是通过手机进行聊天&#xff0c;比如用QQ、微信和短信、邮件等方式&#xff0c;虽然短信不会用来一般的聊天&…