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. C语言中 scanf 和 printf 的小要点

    1 scanf_s需指定%c 个数 h short l long关键字 * 不赋给任何值 W 指定读入宽度 转换字符 a 读浮点值(c99) A 读浮点值(c99) c 读单字符 d 读十进制数 i ...

  2. Javascript arguments详解

    今天我们来看看arguments对象及属性.arguments对象不能显式创建,arguments对象只有函数开始时才可用.函数的 arguments 对象并不是一个数组,访问单个参数的方式与访问数组 ...

  3. c# 读取excel 出现数字读取成“”空

    读取excel用到的方法: /// <summary> /// Excel导入数据源 /// </summary> /// <param name="sheet ...

  4. OpenCV坐标体系的初步认识

    实验基础 本次实验通过一个简短的例子,主要来说明下面4个问题: 1. 坐标体系中的零点坐标为图片的左上角,X轴为图像矩形的上面那条水平线:Y轴为图像矩形左边的那条垂直线.该坐标体系在诸如结构体Mat, ...

  5. redis——基础介绍

    转自:http://www.cnblogs.com/xing901022/p/4863929.html 1 什么是Redis Redis(REmote DIctionary Server,远程数据字典 ...

  6. spark1.3.1安装和集群的搭建

    由于越来越多的人开始使用spark计算框架了,而且spark计算框架也是可以运行在yarn的平台上,因此可以利用单个集群,运行多个计算框架.这是一些大公司都是这么干的.好了,下面讲一下spark1.3 ...

  7. unity3d摄像机入门01

    Clear Flags 清除标记 决定屏幕的哪部分将被清除.当使用多个相机来描绘不同的游戏景象时,利用它是非常方便的  Background 背景 在镜头中的所有元素描绘完成且没有天空盒的情况下,将选 ...

  8. Android res/raw vs assets

    common: 1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. difference: 1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源I ...

  9. php大力力 [016节] 兄弟连高洛峰php教程(2014年 14章数据库章节列表)

    2015-08-25 php大力力016 兄弟连高洛峰php教程(2014年 14章数据库章节列表) [2014]兄弟连高洛峰 PHP教程14.1.1 复习数据库  15:58 [2014]兄弟连高洛 ...

  10. ADO.NET系列之操作XML

    如题,我们保存数据的方式有很多种.在ASP.NET中,可以通过js赋值隐藏域的方式,也可以通过ViewState,Session这样的内置对象,还可以通过数据库的形式.现在经常用到的就是XML了,它的 ...