UINavigationController的用法   界面间传值

UInavigationController继承于UIViewController,以栈的方式管理所控制的师徒控制器,至少要有一个被管理的视图控制器

创建的时候需要用户提供一个视图控制器作为导航控制器的一个根视图控制器

出栈和人栈

UINavigationController通过控制入栈和出栈来展示各个视图控制器

视图控制器切换常用方法

pushViewController:animated //进⼊下一个视图控制器

popViewControllerAnimated //返回上一个视图控制器

popToViewController:animated //返回到指定的视图控制器

popToRootViewControllerAnimated //返回到根视图控制器

定制UINavigationBar

对于navigationBar, iOS7默认的高度是64.

如果将navigationBar的透明度关闭之后,navigationBar的高度将会变为44

整理

每一个视图控制器都有一个navigationItem属性,当这个控制器被嵌入到UINavigationController里之后UINavigationController的navigationBar会根据控制器的navigationItem属性显示标题,左按钮,右按钮等等

 
UINavigationController  push到哪个控制器,哪个控制器的view就会显示在UINavigationController 的contentView里面.同时  ,navigationBar也会根据navigationItem配置bar的显示
 
 
UINavigationBar属于MVC的V层,主要负责  导航条上的内容的显示,以栈的方式管理了一组navigationItem,展示的内容是由每一个控制器的navigationItem决定(有没有标题,有没有左右按扭,有几个,分别执行什么事件等等),另外navigationBar也有自己的属性,比如背景图片,tintColor,barTintColor等
 
UINavigationItem属于MVC中得M层,为UINavigationBar提供展示的数据(包括标题,左右按钮)
 
UIBarButtonItem用于描述 条形视图 (UINavigationBar,UIToolBar等) 上的一个按钮,也属于Model
 
UINavigationController导航控制器属于MVC中得C,主要功能:以栈的方式管理控制器的切换(视图的切换和导航栏内容的切换,) 并伴有动画效果,每个控制器实现自己视图的布局以及事件处理,导航控制器仅仅负责切换,重要的属性:viewControllers,navigationBar 等
//UINavigationController包含一个UINavigationBar
//UINavigationBar管理多个UINavigationItem
//UINavigationItem包含多个UIBarButtonItem
 
 
界面间传值
1.属性传值   ---从前往后传
2.单例传值   ---万能
3.代理传值   ---从后往前
//属性传值

//1.后面的界面定义一个属性 用于保存 ,前一个界面需要传过来得值
//注意:属性定义成字符串还是别的类型,取决于你的需求,本例我们需要一个字符串,用于label显示
//2.后面的界面创建完毕之后,为属性赋值(即:记录需要传递的值)
//3.在需要使用值得地方,使用属性记录的值
//这种通过定义属性,达到传值目的的方式,称为属性传值
//属性传值,.一般用于 从前一个界面向后一个界面传值

//代理传值:从后一个界面往前一个界面传值

//流程

//1.后一个界面定义一个协议,并且定义一个属性叫delegate

//2.在前一个界面进入后一个界面的瞬间(即:创建完后一个界面之后).让前一个界面作为后一个界面的delegate

//3.前一个界面事件代理方法

//4.后一个界面在合适的机会, 让代理执行代理方法 (传得值以参数的形式含在代理方法里)

单例传值

先建一个类,设置单例模式,并加一个属性,用来存值

//Singleton.h中代码
#import <Foundation/Foundation.h> @interface Singleton : NSObject
+ (Singleton *)sharedsingleton;
@property (nonatomic,retain) NSString *str;
@end
//Singleton.m中代码 #import "Singleton.h" @implementation Singleton
static Singleton *single = nil;
+ (Singleton *)sharedsingleton
{
@synchronized(self){
if (single ==nil) {
single = [[Singleton alloc] init];
}
return single;
}
}
@end

在一个界面的button触发事件的方法中加入下面代码

Singleton *s = [Singleton sharedsingleton];

s.str = _textfield.text;

在需要接受值得页面加入

self.navigationItem.title = [Singleton sharedsingleton].str;//传过来的值设置为bar中title值

UI学习笔记---第八天的更多相关文章

  1. 《JavaScript权威指南》学习笔记 第八天 Node Tree

    前几天介绍了DOM的知识,以及节点的操作.今天我们来重点理解下Node的属性以及方法. 在Document文档里属于Node的东西很多: 其中Document对象是Node对象最大的对象,平时我们使用 ...

  2. Semantic ui 学习笔记 持续更新

    这个semantic 更新版本好快~ 首先是代码的标识<code></code> 具体样式就是红框这样的 圈起来代码感觉不错 不过要在semantic.css里在加上如下样式~ ...

  3. UI学习笔记---第十天UITableView表视图编辑

    UITableView表视图编辑 表视图编辑的使用场景 当我们需要手动添加或者删除某条数据到tableView中的时候,就可以使用tableView编辑.比如微信 扣扣中删除和某人的通话 当我们需要手 ...

  4. UI学习笔记---第二天

    程序的执行流程 一.自定义视图 自定义UILebal-UITextField视图 ⾃定义视图:系统标准UI之外,⾃己组合而出的新的视图. 实际开发中,我们还需⾃定义视图.积累⾃己的代码库.⽅便开发. ...

  5. UI学习笔记---第一天

    一.iOS概述 iOS是Apple公司的移动操作系统,主要⽤用于iPhone.iPad.iPad Mini.iPod Touch等移动产品. 借助iOS,我们可以开发视频类.美图类.新闻类.⾳乐类.团 ...

  6. 基于AngularJS的Onsen UI --Onsen UI学习笔记

    AngularJS与Onsen UI的结合,Onsen UI应用程序实际上是一个AngularJS 1应用程序. <!doctype html><html lang="en ...

  7. .Net Core,VUE,VS Code,Sql Sugar,Element UI学习笔记

    1..Net Core的目的是跨平台,并主要目标是作为服务端开发使用.从3.0开始,引入了Winfrom和WPF. 2..Net Core可以引用.Net Framework生成的dll和exe,不限 ...

  8. Amaze UI学习笔记——JS学习历程一

    1.自定义事件 (1)一些组件提供了自定义事件,命名方式为{事件名称}.{组件名称}.amui,用户可以查看组件文档了解.使用这些事件,如: $('#myAlert').on('close.alert ...

  9. jquery ui学习笔记

随机推荐

  1. 构建之法<第四章>之感悟

    第四章:两人合作内容出处:4.6 两人合作的不同阶段和技巧 本章主要是讲关于合作方面的,文章以刚刚认识的两个人为例!也就是说,他们之前的关系是陌生人,然而在现实当中两人合作也可以有其它的关系,比如说合 ...

  2. 利用Nginx+Mono+Fastcgi代替IIS对Asp.Net进行反向代理

    Nginx的好处相信我不必多说了,它作为一个相当轻量级的开源Web 服务器以及反向代理服务器而深受欢迎.越来越多的公司已经对它产生兴趣,包括我们公司的许多部门,利用它进行负载均衡和资源管理,之前写过一 ...

  3. 免费提供一些公开的SOCK4/5/HTTP/HTTPS代理服务器(经测试可以用)

    Last update IP address Port Country Type Anonymity 54 secs 116.228.55.217 8000 flag China HTTP High ...

  4. C#如何以管理员身份运行程序

    在使用winform程序获取调用cmd命令提示符时,如果是win7以上的操作系统,会需要必须以管理员身份运行才会执行成功,否则无效果或提示错误. 比如在通过winform程序执行cmd命令时,某些情况 ...

  5. jquery easyui DataGrid 动态的改变列显示的顺序

    $.extend($.fn.datagrid.methods,{ columnMoving: function(jq){ return jq.each(function(){ var target = ...

  6. bzoj 3529 数表 莫比乌斯反演+树状数组

    题目大意: 有一张N×m的数表,其第i行第j列(1 < =i < =礼,1 < =j < =m)的数值为能同时整除i和j的所有自然数之和.给定a,计算数表中不大于a的数之和. ...

  7. POJ 3691 AC自动机上的dp

    题目大意: 给定一些不合理的DNA序列,再给一段较长的dna序列,问最少修改几次可以使序列中不存在任何不合理序列,不能找到修改方法输出-1 这里你修改某一个点的DNA可能会影响后面,我们不能单纯的找匹 ...

  8. 恢复drop数据

    select * from recyclebin r where r.original_name = 'MSM_EXAINVITEBIDSCHEMEHEAD' ; flashback table MS ...

  9. [windows驱动]内核态驱动架构

    1.windows驱动简介: 1.1 windows组件简介: 1.2 windows驱动类型: windows驱动分为两种基本类型: 用户态驱动在用户态下执行.它们一般提供一套win32应用程序和内 ...

  10. <转>thinkphp自动验证无效的问题

    新手入门thinkphp,试用自动验证表单输入数据功能,却发现怎么都不能调用自动验证,自动验证无效,原因竟是一个小细节的疏忽,学习一定要细心啊! Action方法: IndexAction下的adds ...